74 |
74 |
75 friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t); |
75 friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t); |
76 |
76 |
77 double getUserTime() const |
77 double getUserTime() const |
78 { |
78 { |
79 long cls = sysconf(_SC_CLK_TCK); |
79 return double(ts.tms_utime)/sysconf(_SC_CLK_TCK); |
80 return double(ts.tms_utime)/cls; |
|
81 } |
80 } |
82 double getSystemTime() const |
81 double getSystemTime() const |
83 { |
82 { |
84 long cls = sysconf(_SC_CLK_TCK); |
83 return double(ts.tms_stime)/sysconf(_SC_CLK_TCK); |
85 return double(ts.tms_stime)/cls; |
|
86 } |
84 } |
87 double getCUserTime() const |
85 double getCUserTime() const |
88 { |
86 { |
89 long cls = sysconf(_SC_CLK_TCK); |
87 return double(ts.tms_cutime)/sysconf(_SC_CLK_TCK); |
90 return double(ts.tms_cutime)/cls; |
|
91 } |
88 } |
92 double getCSystemTime() const |
89 double getCSystemTime() const |
93 { |
90 { |
94 long cls = sysconf(_SC_CLK_TCK); |
91 return double(ts.tms_cstime)/sysconf(_SC_CLK_TCK); |
95 return double(ts.tms_cstime)/cls; |
|
96 } |
92 } |
97 }; |
93 }; |
98 |
94 |
99 class Timer |
95 class Timer |
100 { |
96 { |
101 TimeStamp start_time; |
97 TimeStamp start_time; |
102 |
98 |
|
99 void _reset() {start_time.stamp();} |
|
100 |
103 public: |
101 public: |
104 void reset() {start_time.stamp();} |
102 Timer() {_reset();} |
105 Timer() {reset();} |
|
106 |
103 |
107 operator TimeStamp () |
104 operator TimeStamp () |
108 { |
105 { |
109 TimeStamp t; |
106 TimeStamp t; |
110 t.stamp(); |
107 t.stamp(); |
111 return t-start_time; |
108 return t-start_time; |
112 } |
109 } |
|
110 |
|
111 TimeStamp reset() |
|
112 { |
|
113 TimeStamp t(start_time); |
|
114 _reset(); |
|
115 return start_time-t; |
|
116 } |
|
117 |
113 }; |
118 }; |
114 |
119 |
115 inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t) |
120 inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t) |
116 { |
121 { |
117 long cls = sysconf(_SC_CLK_TCK); |
122 long cls = sysconf(_SC_CLK_TCK); |