source: XIOS/dev/dev_ym/XIOS_COUPLING/extern/remap/src/timerRemap.cpp @ 2269

Last change on this file since 2269 was 2269, checked in by ymipsl, 3 years ago
  • Solve memory leak from remapper.
  • shared_ptr add add for manage nodes.

YM

File size: 1.0 KB
Line 
1#include "timerRemap.hpp"
2#include "mpi.hpp"
3#include <string>
4#include <map>
5#include <iostream>
6
7namespace sphereRemap {
8
9using namespace std;
10
11map<string,CTimer*> CTimer::allTimer;
12
13CTimer::CTimer(const string& name_) : name(name_)
14{
15        reset();
16}
17
18double CTimer::getTime(void)
19{
20        return MPI_Wtime();
21}
22
23void CTimer::suspend(void)
24{
25        if (!suspended)
26                cumulatedTime+=getTime()-lastTime;
27        suspended=true;
28}
29
30void CTimer::resume(void)
31{
32        if (suspended)
33                lastTime=getTime();
34        suspended=false;
35}
36
37void CTimer::reset(void)
38{
39        cumulatedTime=0.;
40        suspended=true;
41}
42
43double CTimer::getCumulatedTime(void)
44{
45        return cumulatedTime;
46}
47
48void CTimer::print(void)
49{
50#ifdef TIMEIT
51        cout << " Time for "<<name<<" : "<<getCumulatedTime() <<"  s"<<endl;
52#endif
53}
54
55CTimer& CTimer::get(const string name)
56{
57        map<string,CTimer*>::iterator it;
58        it=allTimer.find(name);
59        if (it==allTimer.end()) it=allTimer.insert(pair<string,CTimer*>(name,new CTimer(name))).first;
60        return *(it->second);
61}
62
63void CTimer::release(void)
64{
65  for(auto & it : allTimer) delete it.second ;
66  allTimer.clear() ;   
67}
68
69}
Note: See TracBrowser for help on using the repository browser.