1 #ifndef _WDL_TIMING2_H_
2 #define _WDL_TIMING2_H_
4 #if defined(_DEBUG) || defined(WDL_TIMING_ENABLE_FOR_RELEASE)
5 #include "time_precise.h"
8 class wdl_timing_accumulator
12 #if defined(_DEBUG) || defined(WDL_TIMING_ENABLE_FOR_RELEASE)
14 wdl_timing_accumulator(const char *name
=NULL
)
18 m_name
= name
? name
: "[unnamed]";
21 ~wdl_timing_accumulator()
26 void Report(const char *caption
=NULL
) const
30 const double usec
=1000000.0;
31 wdl_log_force("timing %s%s%s%s: %.0f calls, %.0f usec/call, %.0f usec total\n",
32 m_name
, caption
? " (" : "", caption
? caption
: "", caption
? ")" : "",
33 (double)m_cnt
, m_tot
*usec
/(double)m_cnt
, m_tot
*usec
);
40 m_cur
= time_precise();
44 WDL_ASSERT(m_depth
> 0);
47 WDL_ASSERT(m_cur
!= 0.0);
48 m_tot
+= time_precise()-m_cur
;
61 wdl_timing_accumulator(const char *name
=NULL
) {}
62 ~wdl_timing_accumulator() {}
63 void Report(const char *caption
=NULL
) {}
70 class wdl_timing_accumulator_hold
73 #if defined(_DEBUG) || defined(WDL_TIMING_ENABLE_FOR_RELEASE)
74 wdl_timing_accumulator_hold(wdl_timing_accumulator
*p
) : m_p(p
) { if (p
) p
->Begin(); }
75 ~wdl_timing_accumulator_hold() { if (m_p
) m_p
->End(); }
76 wdl_timing_accumulator
*m_p
;
78 wdl_timing_accumulator_hold(wdl_timing_accumulator
*p
) {}