MyraMath


Source: tests/utility/Timer.cpp

1 // ========================================================================= //
2 // This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
3 // and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
4 // ========================================================================= //
5 
11 #include <myramath/utility/Timer.h>
12 #include <tests/myratest.h>
13 
14 using namespace myra;
15 
16 namespace {
17 
18 // Returns n'th fibonacci number. Exceedingly slow implementation meant to eat up the clock.
19 int fib(int n)
20  {
21  if (n == 0) return 0;
22  if (n == 1) return 1;
23  return fib(n-1)+fib(n-2);
24  }
25 
26 } // namespace
27 
28 ADD_TEST("Timer","[utility]")
29  {
30  // Compute consecutive fibonacci numbers for about 0.5 sec.
31  Timer timer;
32  int N = 50;
33  double T = 0.0;
34  for (int n = 0; n < N && T < 0.5; ++n)
35  {
36  myra::out() << "fib(" << n << ") = " << fib(n) << " [" << T << " sec]" << std::endl;
37  T = timer.elapsed_time();
38  }
39  }
Simplistic timing class, might dispatch to platform specific timers depending upon environment...
Definition: syntax.dox:1
Measures elapsed time.
Definition: Timer.h:19
double elapsed_time() const
Returns elapsed time in seconds since last call to reset()
Definition: Timer.cpp:18


Results: [PASS]

fib(0) = 0 [0 sec]
fib(1) = 1 [0 sec]
fib(2) = 1 [0 sec]
fib(3) = 2 [0 sec]
fib(4) = 3 [0 sec]
fib(5) = 5 [0 sec]
fib(6) = 8 [0 sec]
fib(7) = 13 [0 sec]
fib(8) = 21 [0.001 sec]
fib(9) = 34 [0.001 sec]
fib(10) = 55 [0.001 sec]
fib(11) = 89 [0.001 sec]
fib(12) = 144 [0.001 sec]
fib(13) = 233 [0.001 sec]
fib(14) = 377 [0.001 sec]
fib(15) = 610 [0.001 sec]
fib(16) = 987 [0.001 sec]
fib(17) = 1597 [0.001 sec]
fib(18) = 2584 [0.001 sec]
fib(19) = 4181 [0.001 sec]
fib(20) = 6765 [0.001 sec]
fib(21) = 10946 [0.001 sec]
fib(22) = 17711 [0.001 sec]
fib(23) = 28657 [0.001 sec]
fib(24) = 46368 [0.001 sec]
fib(25) = 75025 [0.001 sec]
fib(26) = 121393 [0.001 sec]
fib(27) = 196418 [0.002 sec]
fib(28) = 317811 [0.003 sec]
fib(29) = 514229 [0.004 sec]
fib(30) = 832040 [0.006 sec]
fib(31) = 1346269 [0.008001 sec]
fib(32) = 2178309 [0.013001 sec]
fib(33) = 3524578 [0.021001 sec]
fib(34) = 5702887 [0.033002 sec]
fib(35) = 9227465 [0.054003 sec]
fib(36) = 14930352 [0.085005 sec]
fib(37) = 24157817 [0.136008 sec]
fib(38) = 39088169 [0.217013 sec]
fib(39) = 63245986 [0.35102 sec]


Go back to Summary of /test programs.