source:
XIOS/trunk/src/timer.cpp
@
1077
Last change on this file since 1077 was 652, checked in by rlacroix, 9 years ago | |
---|---|
|
|
File size: 1.0 KB |
Rev | Line | |
---|---|---|
[347] | 1 | #include "timer.hpp" |
[382] | 2 | #include "mpi.hpp" |
[347] | 3 | #include <string> |
4 | #include <map> | |
5 | #include "tracer.hpp" | |
6 | ||
7 | namespace xios | |
8 | { | |
[652] | 9 | std::map<std::string,CTimer> CTimer::allTimer; |
[347] | 10 | |
[652] | 11 | CTimer::CTimer(const std::string& name_) : name(name_) |
[347] | 12 | { |
[652] | 13 | reset(); |
[347] | 14 | } |
15 | ||
16 | double CTimer::getTime(void) | |
17 | { | |
18 | return MPI_Wtime(); | |
19 | } | |
20 | ||
21 | void CTimer::suspend(void) | |
22 | { | |
23 | if (!suspended) | |
24 | { | |
[652] | 25 | traceEnd(name); |
26 | cumulatedTime += getTime() - lastTime; | |
[347] | 27 | } |
[652] | 28 | suspended = true; |
[347] | 29 | } |
30 | ||
31 | void CTimer::resume(void) | |
32 | { | |
33 | if (suspended) | |
34 | { | |
[652] | 35 | lastTime = getTime(); |
36 | traceBegin(name); | |
[347] | 37 | } |
[652] | 38 | suspended = false; |
[347] | 39 | } |
40 | ||
41 | void CTimer::reset(void) | |
42 | { | |
[652] | 43 | cumulatedTime = 0.; |
44 | suspended = true; | |
[347] | 45 | } |
46 | ||
47 | double CTimer::getCumulatedTime(void) | |
48 | { | |
[652] | 49 | return cumulatedTime; |
[347] | 50 | } |
51 | ||
[652] | 52 | CTimer& CTimer::get(const std::string name) |
[347] | 53 | { |
[652] | 54 | std::map<std::string,CTimer>::iterator it = allTimer.find(name); |
55 | if (it == allTimer.end()) | |
56 | it = allTimer.insert(std::make_pair(name, CTimer(name))).first; | |
57 | return it->second; | |
[347] | 58 | } |
59 | } |
Note: See TracBrowser
for help on using the repository browser.