diff options
author | Darkvater <darkvater@openttd.org> | 2006-03-26 21:15:09 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2006-03-26 21:15:09 +0000 |
commit | a91c52e16909976b40951cf2893f2349e9ebf25d (patch) | |
tree | 07ce18ba583aad9caf062c352c2632ba1ea394c6 /debug.h | |
parent | 4125aa21f8dfc72a60bf70b890b95c2187425112 (diff) | |
download | openttd-a91c52e16909976b40951cf2893f2349e9ebf25d.tar.xz |
(svn r4125) - Feature: Add a general TIC() TOC() mechanism using rdtsc or something similar on non-i386 architectures to performance-tune (critical) code. Some systems are probably missing, but those can be added later.
Diffstat (limited to 'debug.h')
-rw-r--r-- | debug.h | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -26,4 +26,27 @@ void CDECL debug(const char *s, ...); void SetDebugString(const char *s); const char *GetDebugString(void); +/* MSVC of course has to have a different syntax for long long *sigh* */ +#ifdef _MSC_VER +# define OTTD_PRINTF64 "I64" +#else +# define OTTD_PRINTF64 "ll" +#endif + +// Used for profiling +#define TIC() {\ + extern uint64 _rdtsc(void);\ + uint64 _xxx_ = _rdtsc();\ + static uint64 __sum__ = 0;\ + static uint32 __i__ = 0; + +#define TOC(str, count)\ + __sum__ += _rdtsc() - _xxx_;\ + if (++__i__ == count) {\ + printf("[%s]: %" OTTD_PRINTF64 "u [avg: %.1f]\n", str, __sum__, __sum__/(double)__i__);\ + __i__ = 0;\ + __sum__ = 0;\ + }\ +} + #endif /* DEBUG_H */ |