max@0
|
1 // Copyright (C) 2008-2012 NICTA (www.nicta.com.au)
|
max@0
|
2 // Copyright (C) 2008-2012 Conrad Sanderson
|
max@0
|
3 //
|
max@0
|
4 // This file is part of the Armadillo C++ library.
|
max@0
|
5 // It is provided without any warranty of fitness
|
max@0
|
6 // for any purpose. You can redistribute this file
|
max@0
|
7 // and/or modify it under the terms of the GNU
|
max@0
|
8 // Lesser General Public License (LGPL) as published
|
max@0
|
9 // by the Free Software Foundation, either version 3
|
max@0
|
10 // of the License or (at your option) any later version.
|
max@0
|
11 // (see http://www.opensource.org/licenses for more info)
|
max@0
|
12
|
max@0
|
13
|
max@0
|
14 //! \addtogroup wall_clock
|
max@0
|
15 //! @{
|
max@0
|
16
|
max@0
|
17
|
max@0
|
18 inline
|
max@0
|
19 wall_clock::wall_clock()
|
max@0
|
20 : valid(false)
|
max@0
|
21 {
|
max@0
|
22 arma_extra_debug_sigprint();
|
max@0
|
23 }
|
max@0
|
24
|
max@0
|
25
|
max@0
|
26
|
max@0
|
27 inline
|
max@0
|
28 wall_clock::~wall_clock()
|
max@0
|
29 {
|
max@0
|
30 arma_extra_debug_sigprint();
|
max@0
|
31 }
|
max@0
|
32
|
max@0
|
33
|
max@0
|
34
|
max@0
|
35 inline
|
max@0
|
36 void
|
max@0
|
37 wall_clock::tic()
|
max@0
|
38 {
|
max@0
|
39 arma_extra_debug_sigprint();
|
max@0
|
40
|
max@0
|
41 #if defined(ARMA_USE_BOOST_DATE)
|
max@0
|
42 {
|
max@0
|
43 boost_time1 = boost::posix_time::microsec_clock::local_time();
|
max@0
|
44 valid = true;
|
max@0
|
45 }
|
max@0
|
46 #elif defined(ARMA_HAVE_GETTIMEOFDAY)
|
max@0
|
47 {
|
max@0
|
48 gettimeofday(&posix_time1, 0);
|
max@0
|
49 valid = true;
|
max@0
|
50 }
|
max@0
|
51 #else
|
max@0
|
52 {
|
max@0
|
53 time1 = clock();
|
max@0
|
54 valid = true;
|
max@0
|
55 }
|
max@0
|
56 #endif
|
max@0
|
57 }
|
max@0
|
58
|
max@0
|
59
|
max@0
|
60
|
max@0
|
61 inline
|
max@0
|
62 double
|
max@0
|
63 wall_clock::toc()
|
max@0
|
64 {
|
max@0
|
65 arma_extra_debug_sigprint();
|
max@0
|
66
|
max@0
|
67 if(valid)
|
max@0
|
68 {
|
max@0
|
69 #if defined(ARMA_USE_BOOST_DATE)
|
max@0
|
70 {
|
max@0
|
71 boost_duration = boost::posix_time::microsec_clock::local_time() - boost_time1;
|
max@0
|
72 return boost_duration.total_microseconds() * 1e-6;
|
max@0
|
73 }
|
max@0
|
74 #elif defined(ARMA_HAVE_GETTIMEOFDAY)
|
max@0
|
75 {
|
max@0
|
76 gettimeofday(&posix_time2, 0);
|
max@0
|
77
|
max@0
|
78 const double tmp_time1 = posix_time1.tv_sec + posix_time1.tv_usec * 1.0e-6;
|
max@0
|
79 const double tmp_time2 = posix_time2.tv_sec + posix_time2.tv_usec * 1.0e-6;
|
max@0
|
80
|
max@0
|
81 return tmp_time2 - tmp_time1;
|
max@0
|
82 }
|
max@0
|
83 #else
|
max@0
|
84 {
|
max@0
|
85 clock_t time2 = clock();
|
max@0
|
86
|
max@0
|
87 clock_t diff = time2 - time1;
|
max@0
|
88
|
max@0
|
89 return double(diff) / double(CLOCKS_PER_SEC);
|
max@0
|
90 }
|
max@0
|
91 #endif
|
max@0
|
92 }
|
max@0
|
93 else
|
max@0
|
94 {
|
max@0
|
95 return 0.0;
|
max@0
|
96 }
|
max@0
|
97 }
|
max@0
|
98
|
max@0
|
99
|
max@0
|
100
|
max@0
|
101 //! @}
|
max@0
|
102
|