Config is getting big, pass by reference rather than value
[benchmarks.git] / src / harness.h
index f623114ba4d862891686979af67b8100f6680f95..72ee8d1c36458141018030b95cdbc37270517e30 100644 (file)
@@ -30,7 +30,7 @@ class BenchHarnessBase
     std::shared_ptr<void> thread_cache;
     class ThreadCache;
     friend class ThreadCache;
-    void base_run(Config config,
+    void base_run(const Config &config,
                   void (*fn)(BenchHarnessBase *bench_harness_base,
                              std::uint64_t iteration_count,
                              std::uint32_t thread_num));
@@ -51,7 +51,7 @@ class BenchHarness final : private BenchHarnessBase
         : fn(std::move(fn)), input(std::move(input))
     {
     }
-    void run(Config config)
+    void run(const Config &config)
     {
         base_run(config, [](BenchHarnessBase *bench_harness_base,
                             std::uint64_t iteration_count,
@@ -88,17 +88,17 @@ class Benchmark final
 {
   private:
     std::string m_name;
-    std::function<void(Config config)> m_run;
+    std::function<void(const Config &config)> m_run;
 
   public:
     template <typename Fn, typename Input>
     explicit Benchmark(Fn fn, Input input, std::string name)
-        : m_name(std::move(name)), m_run([fn, input](Config config) {
+        : m_name(std::move(name)), m_run([fn, input](const Config &config) {
               return BenchHarness(std::move(fn), std::move(input)).run(config);
           })
     {
     }
-    void run(Config config)
+    void run(const Config &config)
     {
         return m_run(config);
     }