1 /*==========================================================================
2 * Copyright (c) 2004 University of Massachusetts. All Rights Reserved.
4 * Use of the Lemur Toolkit for Language Modeling and Information Retrieval
5 * is subject to the terms of the software license set forth in the LICENSE
6 * file included with this software, and also available at
7 * http://www.lemurproject.org/license.html
9 *==========================================================================
16 // 13 August 2004 -- tds
19 #include "indri/IndriTimer.hpp"
20 #include "lemur/lemur-compat.hpp"
30 indri::utility::IndriTimer::IndriTimer()
42 UINT64
indri::utility::IndriTimer::currentTime() {
45 ::GetSystemTimeAsFileTime( &filetime
);
47 // this time is now in 100 nanosecond increments
48 UINT64 result
= filetime
.dwHighDateTime
;
50 result
+= filetime
.dwLowDateTime
;
56 UINT64 seconds
= tv
.tv_sec
;
57 UINT64 million
= 1000000;
58 UINT64 microseconds
= tv
.tv_usec
;
60 return seconds
* million
+ microseconds
;
68 void indri::utility::IndriTimer::start() {
70 _start
= currentTime();
77 void indri::utility::IndriTimer::stop() {
78 _elapsed
+= (currentTime() - _start
);
87 void indri::utility::IndriTimer::reset() {
97 UINT64
indri::utility::IndriTimer::elapsedTime() const {
98 UINT64 total
= _elapsed
;
101 total
+= (currentTime() - _start
);
108 // printElapsedMicroseconds
111 void indri::utility::IndriTimer::printElapsedMicroseconds( std::ostream
& out
) const {
112 UINT64 elapsed
= elapsedTime();
113 const UINT64 million
= 1000000;
115 int minutes
= int(elapsed
/ (60 * million
));
116 int seconds
= int(elapsed
/million
- 60*minutes
);
117 int microseconds
= int(elapsed
% million
);
121 << std::setw(2) << std::setfill('0')
124 << std::setw(6) << std::setfill('0')
129 // printElapsedSeconds
132 void indri::utility::IndriTimer::printElapsedSeconds( std::ostream
& out
) const {
133 UINT64 elapsed
= elapsedTime();
134 const UINT64 million
= 1000000;
136 int minutes
= int(elapsed
/ (60 * million
));
137 int seconds
= int(elapsed
/million
- 60*minutes
);
138 int microseconds
= int(elapsed
% million
);
142 << std::setw(2) << std::setfill('0')