diff options
Diffstat (limited to 'src/mongo/db/stats/timer_stats.cpp')
-rw-r--r-- | src/mongo/db/stats/timer_stats.cpp | 67 |
1 files changed, 32 insertions, 35 deletions
diff --git a/src/mongo/db/stats/timer_stats.cpp b/src/mongo/db/stats/timer_stats.cpp index 728f05cb3f3..1030d296eb4 100644 --- a/src/mongo/db/stats/timer_stats.cpp +++ b/src/mongo/db/stats/timer_stats.cpp @@ -31,47 +31,44 @@ namespace mongo { - TimerHolder::TimerHolder( TimerStats* stats ) - : _stats( stats ), _recorded( false ){ - } - - TimerHolder::~TimerHolder() { - if ( ! _recorded ) { - recordMillis(); - } - } +TimerHolder::TimerHolder(TimerStats* stats) : _stats(stats), _recorded(false) {} - int TimerHolder::recordMillis() { - _recorded = true; - if ( _stats ) { - return _stats->record( _t ); - } - return _t.millis(); +TimerHolder::~TimerHolder() { + if (!_recorded) { + recordMillis(); } +} - void TimerStats::recordMillis( int millis ) { - scoped_spinlock lk( _lock ); - _num++; - _totalMillis += millis; +int TimerHolder::recordMillis() { + _recorded = true; + if (_stats) { + return _stats->record(_t); } + return _t.millis(); +} - int TimerStats::record( const Timer& timer ) { - int millis = timer.millis(); - recordMillis( millis ); - return millis; - } +void TimerStats::recordMillis(int millis) { + scoped_spinlock lk(_lock); + _num++; + _totalMillis += millis; +} - BSONObj TimerStats::getReport() const { - long long n, t; - { - scoped_spinlock lk( _lock ); - n = _num; - t = _totalMillis; - } - BSONObjBuilder b(64); - b.appendNumber( "num", n ); - b.appendNumber( "totalMillis" , t ); - return b.obj(); +int TimerStats::record(const Timer& timer) { + int millis = timer.millis(); + recordMillis(millis); + return millis; +} +BSONObj TimerStats::getReport() const { + long long n, t; + { + scoped_spinlock lk(_lock); + n = _num; + t = _totalMillis; } + BSONObjBuilder b(64); + b.appendNumber("num", n); + b.appendNumber("totalMillis", t); + return b.obj(); +} } |