BIND 10 master, updated. d5e250eff9f9c7996f16eebfc6f4bb7e0dd02aee [master] Merge branch 'trac1773'

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Apr 4 22:24:39 UTC 2012


The branch, master has been updated
       via  d5e250eff9f9c7996f16eebfc6f4bb7e0dd02aee (commit)
       via  80c297d9ae634e44c510884ede894c6737941820 (commit)
      from  923c859c0ff6fcfc3d0c268cd20d493b71e66d29 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d5e250eff9f9c7996f16eebfc6f4bb7e0dd02aee
Merge: 923c859 80c297d
Author: JINMEI Tatuya <jinmei at isc.org>
Date:   Wed Apr 4 15:09:19 2012 -0700

    [master] Merge branch 'trac1773'

commit 80c297d9ae634e44c510884ede894c6737941820
Author: JINMEI Tatuya <jinmei at isc.org>
Date:   Tue Mar 13 00:01:53 2012 -0700

    [1773] initial fix for clang++/Lion build failure

-----------------------------------------------------------------------

Summary of changes:
 src/lib/bench/benchmark.h                 |   46 ++++++++++++++++------------
 src/lib/bench/example/search_bench.cc     |    4 +-
 src/lib/bench/tests/benchmark_unittest.cc |    8 ++--
 3 files changed, 32 insertions(+), 26 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/bench/benchmark.h b/src/lib/bench/benchmark.h
index 7f77aa1..22ae7e7 100644
--- a/src/lib/bench/benchmark.h
+++ b/src/lib/bench/benchmark.h
@@ -17,6 +17,7 @@
 
 #include <sys/time.h>
 
+#include <cassert>
 #include <iostream>
 #include <ios>
 
@@ -210,9 +211,9 @@ public:
     /// \param target The templated class object that
     /// implements the code to be benchmarked.
     BenchMark(const int iterations, T target) :
-        iterations_(iterations), sub_iterations_(0), target_(target)
+        iterations_(iterations), sub_iterations_(0)
     {
-        initialize(true);
+        initialize(target, true);
     }
 
     /// \brief Constructor for finer-grained control.
@@ -230,9 +231,9 @@ public:
     /// \param immediate If \c true the benchmark will be performed within
     /// the constructor; otherwise it only does initialization.
     BenchMark(const int iterations, T& target, const bool immediate) :
-        iterations_(iterations), sub_iterations_(0), target_(target)
+        iterations_(iterations), sub_iterations_(0), target_(&target)
     {
-        initialize(immediate);
+        initialize(target, immediate);
     }
     //@}
 
@@ -241,14 +242,14 @@ public:
     /// This method will be called from \c run() before starting the benchmark.
     /// By default it's empty, but can be customized via template
     /// specialization.
-    void setUp() {}
+    void setUp(T&) {}
 
     /// \brief Hook to be called after benchmark.
     ///
     /// This method will be called from \c run() when the benchmark completes.
     /// By default it's empty, but can be customized via template
     /// specialization.
-    void tearDown() {}
+    void tearDown(T&) {}
 
     /// \brief Perform benchmark.
     ///
@@ -257,17 +258,8 @@ public:
     /// of times specified on construction, and records the time on completion.
     /// Finally, it calls \c tearDown().
     void run() {
-        setUp();
-
-        struct timeval beg, end;
-        gettimeofday(&beg, NULL);
-        for (unsigned int i = 0; i < iterations_; ++i) {
-            sub_iterations_ += target_.run();
-        }
-        gettimeofday(&end, NULL);
-        tv_diff_ = tv_subtract(end, beg);
-
-        tearDown();
+        assert(target_ != NULL);
+        run(*target_);
     }
 
     /// \brief Print the benchmark result.
@@ -361,9 +353,23 @@ public:
     /// performed implicitly.
     static const int ITERATION_FAILURE = -1;
 private:
-    void initialize(const bool immediate) {
+    void run(T& target) {
+        setUp(target);
+
+        struct timeval beg, end;
+        gettimeofday(&beg, NULL);
+        for (unsigned int i = 0; i < iterations_; ++i) {
+            sub_iterations_ += target.run();
+        }
+        gettimeofday(&end, NULL);
+        tv_diff_ = tv_subtract(end, beg);
+
+        tearDown(target);
+    }
+
+    void initialize(T& target, const bool immediate) {
         if (immediate) {
-            run();
+            run(target);
             printResult();
         }
     }
@@ -388,7 +394,7 @@ private:
     static const int ONE_MILLION = 1000000;
     const unsigned int iterations_;
     unsigned int sub_iterations_;
-    T& target_;
+    T* target_;
     struct timeval tv_diff_;
 };
 
diff --git a/src/lib/bench/example/search_bench.cc b/src/lib/bench/example/search_bench.cc
index 851d815..84f95d9 100644
--- a/src/lib/bench/example/search_bench.cc
+++ b/src/lib/bench/example/search_bench.cc
@@ -79,9 +79,9 @@ namespace isc {
 namespace bench {
 template<>
 void
-BenchMark<SetSearchBenchMark>::setUp() {
+BenchMark<SetSearchBenchMark>::setUp(SetSearchBenchMark& target) {
     cout << "Benchmark for searching std::set (size="
-         << target_.data_.size() << ")" << endl;    
+         << target.data_.size() << ")" << endl;
 }
 }
 }
diff --git a/src/lib/bench/tests/benchmark_unittest.cc b/src/lib/bench/tests/benchmark_unittest.cc
index 9b476cd..dfe7df9 100644
--- a/src/lib/bench/tests/benchmark_unittest.cc
+++ b/src/lib/bench/tests/benchmark_unittest.cc
@@ -46,14 +46,14 @@ namespace isc {
 namespace bench {
 template <>
 void
-BenchMark<TestBenchMark>::setUp() {
-    target_.setup_completed_ = true;
+BenchMark<TestBenchMark>::setUp(TestBenchMark& target) {
+    target.setup_completed_ = true;
 };
 
 template <>
 void
-BenchMark<TestBenchMark>::tearDown() {
-    target_.teardown_completed_ = true;
+BenchMark<TestBenchMark>::tearDown(TestBenchMark& target) {
+    target.teardown_completed_ = true;
 };
 
 // XXX: some compilers cannot find class static constants used in



More information about the bind10-changes mailing list