1a8c51b3fSopenharmony_ci 2a8c51b3fSopenharmony_ci#include <cassert> 3a8c51b3fSopenharmony_ci#include <memory> 4a8c51b3fSopenharmony_ci 5a8c51b3fSopenharmony_ci#include "benchmark/benchmark.h" 6a8c51b3fSopenharmony_ci 7a8c51b3fSopenharmony_citemplate <typename T> 8a8c51b3fSopenharmony_ciclass MyFixture : public ::benchmark::Fixture { 9a8c51b3fSopenharmony_ci public: 10a8c51b3fSopenharmony_ci MyFixture() : data(0) {} 11a8c51b3fSopenharmony_ci 12a8c51b3fSopenharmony_ci T data; 13a8c51b3fSopenharmony_ci}; 14a8c51b3fSopenharmony_ci 15a8c51b3fSopenharmony_ciBENCHMARK_TEMPLATE_F(MyFixture, Foo, int)(benchmark::State& st) { 16a8c51b3fSopenharmony_ci for (auto _ : st) { 17a8c51b3fSopenharmony_ci data += 1; 18a8c51b3fSopenharmony_ci } 19a8c51b3fSopenharmony_ci} 20a8c51b3fSopenharmony_ci 21a8c51b3fSopenharmony_ciBENCHMARK_TEMPLATE_DEFINE_F(MyFixture, Bar, double)(benchmark::State& st) { 22a8c51b3fSopenharmony_ci for (auto _ : st) { 23a8c51b3fSopenharmony_ci data += 1.0; 24a8c51b3fSopenharmony_ci } 25a8c51b3fSopenharmony_ci} 26a8c51b3fSopenharmony_ciBENCHMARK_REGISTER_F(MyFixture, Bar); 27a8c51b3fSopenharmony_ci 28a8c51b3fSopenharmony_ciBENCHMARK_MAIN(); 29