add walltime benchmark and fix unused variable.
diff --git a/src/walltime.cc b/src/walltime.cc
index 51c6d4a..3a47799 100644
--- a/src/walltime.cc
+++ b/src/walltime.cc
@@ -145,6 +145,21 @@
 } // end anonymous namespace
 
 
+WallTime CPUWalltimeNow() {
+  static WallTimeImp& imp = WallTimeImp::GetWallTimeImp();
+  return imp.Now();
+}
+
+WallTime ChronoWalltimeNow() {
+  typedef std::chrono::system_clock Clock;
+  typedef std::chrono::duration<WallTime, std::chrono::seconds::period>
+          FPSeconds;
+  static_assert(std::chrono::treat_as_floating_point<WallTime>::value,
+                "This type must be treated as a floating point type.");
+  auto now = Clock::now().time_since_epoch();
+  return std::chrono::duration_cast<FPSeconds>(now).count();
+}
+
 // WallTimeImp doesn't work when CPU Scaling is enabled. If CPU Scaling is
 // enabled at the start of the program then std::chrono::system_clock is used
 // instead.
@@ -152,16 +167,9 @@
 {
   static bool useWallTime = !CpuScalingEnabled();
   if (useWallTime) {
-    static WallTimeImp& imp = WallTimeImp::GetWallTimeImp();
-    return imp.Now();
+    return CPUWalltimeNow();
   } else {
-    typedef std::chrono::system_clock Clock;
-    typedef std::chrono::duration<WallTime, std::chrono::seconds::period>
-            FPSeconds;
-    static_assert(std::chrono::treat_as_floating_point<WallTime>::value,
-                  "This type must be treated as a floating point type.");
-    auto now = Clock::now().time_since_epoch();
-    return std::chrono::duration_cast<FPSeconds>(now).count();
+    return ChronoWalltimeNow();
   }
 }
 
@@ -185,6 +193,7 @@
   }
   std::size_t written = std::strftime(storage, sizeof(storage), "%F %T", &timeinfo);
   CHECK(written < arraysize(storage));
+  ((void)written); // prevent unused variable in optimized mode.
   return std::string(storage);
 }
 
diff --git a/src/walltime.h b/src/walltime.h
index face158..497112e 100644
--- a/src/walltime.h
+++ b/src/walltime.h
@@ -7,6 +7,8 @@
 typedef double WallTime;
 
 namespace walltime {
+WallTime CPUWalltimeNow();
+WallTime ChronoWalltimeNow();
 WallTime Now();
 }  // end namespace walltime
 
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 8fdb6f3..f8f01d0 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -32,3 +32,5 @@
 set_target_properties(cxx03_test
     PROPERTIES COMPILE_FLAGS "${CXX03_FLAGS}")
 add_test(cxx03 cxx03_test)
+
+compile_benchmark_test(walltime_test)
diff --git a/test/basic_test.cc b/test/basic_test.cc
index f93c8d7..fedcf08 100644
--- a/test/basic_test.cc
+++ b/test/basic_test.cc
@@ -65,8 +65,8 @@
     state.ResumeTiming();
   }
 }
-BENCHMARK_TEST(BM_pause_during);
-BENCHMARK_TEST(BM_pause_during)->ThreadPerCpu();
+BENCHMARK(BM_pause_during);
+BENCHMARK(BM_pause_during)->ThreadPerCpu();
 
 void BM_pause_during_realtime(benchmark::State& state) {
   state.UseRealTime();
@@ -75,8 +75,8 @@
     state.ResumeTiming();
   }
 }
-BENCHMARK_TEST(BM_pause_during_realtime);
-BENCHMARK_TEST(BM_pause_during_realtime)->ThreadPerCpu();
+BENCHMARK(BM_pause_during_realtime);
+BENCHMARK(BM_pause_during_realtime)->ThreadPerCpu();
 
 void BM_spin_pause_after(benchmark::State& state) {
   while(state.KeepRunning()) {