8#ifndef INCLUDED_BSLS_STOPWATCH
9#define INCLUDED_BSLS_STOPWATCH
123#include <bsls_keyword.h>
158 TimeUtil::OpaqueNativeTime d_startWallTime;
174 bool d_collectCpuTimesFlag;
178 static const double s_nanosecondsPerSecond;
199 TimeUtil::OpaqueNativeTime *wallTime)
const;
203 Types::Int64 elapsedWallTime(TimeUtil::OpaqueNativeTime rawWallTime)
const;
219#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
256 void start(
bool collectCpuTimes =
false);
279 double *wallTime)
const;
311void Stopwatch::accumulatedTimesRaw(
Types::Int64 *systemTime,
313 TimeUtil::OpaqueNativeTime *wallTime)
const
321 TimeUtil::OpaqueNativeTime rawWallTime)
const
330: d_startSystemTime(0)
333, d_accumulatedSystemTime(0)
334, d_accumulatedUserTime(0)
335, d_accumulatedWallTime(0)
337, d_collectCpuTimesFlag(false)
340 memset(&d_startWallTime, 0,
sizeof(d_startWallTime));
348 d_accumulatedSystemTime = 0;
349 d_accumulatedUserTime = 0;
350 d_accumulatedWallTime = 0;
357 d_collectCpuTimesFlag = collectCpuTimes;
358 if (d_collectCpuTimesFlag) {
359 accumulatedTimesRaw(&d_startSystemTime,
374 if (d_collectCpuTimesFlag) {
378 TimeUtil::OpaqueNativeTime now;
380 d_accumulatedWallTime += elapsedWallTime(now);
390 if (!d_collectCpuTimesFlag) {
395 return (
double)(d_accumulatedSystemTime
397 / s_nanosecondsPerSecond;
400 return (
double)d_accumulatedSystemTime / s_nanosecondsPerSecond;
406 if (!d_collectCpuTimesFlag) {
411 return (
double)(d_accumulatedUserTime
413 / s_nanosecondsPerSecond;
416 return (
double)d_accumulatedUserTime / s_nanosecondsPerSecond;
423 TimeUtil::OpaqueNativeTime now;
425 return (
double)(d_accumulatedWallTime + elapsedWallTime(now))
426 / s_nanosecondsPerSecond;
429 return (
double)d_accumulatedWallTime / s_nanosecondsPerSecond;
446#ifndef BDE_OPENSOURCE_PUBLICATION
Definition bsls_stopwatch.h:149
double accumulatedWallTime() const
Definition bsls_stopwatch.h:420
static const bool k_COLLECT_WALL_TIME_ONLY
Definition bsls_stopwatch.h:207
void stop()
Definition bsls_stopwatch.h:371
void start(bool collectCpuTimes=false)
Definition bsls_stopwatch.h:354
double accumulatedUserTime() const
Definition bsls_stopwatch.h:404
double accumulatedSystemTime() const
Definition bsls_stopwatch.h:388
void accumulatedTimes(double *systemTime, double *userTime, double *wallTime) const
Stopwatch()
Definition bsls_stopwatch.h:329
void reset()
Definition bsls_stopwatch.h:345
double elapsedTime() const
Definition bsls_stopwatch.h:433
static const bool k_COLLECT_WALL_AND_CPU_TIMES
Definition bsls_stopwatch.h:211
bool isRunning() const
Definition bsls_stopwatch.h:439
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_KEYWORD_DELETED
Definition bsls_keyword.h:651
bsls::Stopwatch bsls_Stopwatch
This alias is defined for backward compatibility.
Definition bsls_stopwatch.h:452
Definition bdlt_iso8601util.h:707
static Types::Int64 convertRawTime(OpaqueNativeTime rawTime)
static Types::Int64 getProcessUserTimer()
static void getTimerRaw(OpaqueNativeTime *timeValue)
static void getProcessTimers(Types::Int64 *systemTimer, Types::Int64 *userTimer)
static Types::Int64 getProcessSystemTimer()
long long Int64
Definition bsls_types.h:134