# HG changeset patch # User Darkvater # Date 1143407709 0 # Node ID b20541ef8945e884ad6482506470447ee067e669 # Parent 8e89a10f9e4c94f031acc69e2d0d0f65502ef9d8 (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. diff -r 8e89a10f9e4c -r b20541ef8945 Makefile --- a/Makefile Sun Mar 26 21:13:16 2006 +0000 +++ b/Makefile Sun Mar 26 21:15:09 2006 +0000 @@ -670,6 +670,7 @@ SRCS += openttd.c SRCS += order_cmd.c SRCS += order_gui.c +SRCS += os_timer.c SRCS += pathfind.c SRCS += player_gui.c SRCS += players.c diff -r 8e89a10f9e4c -r b20541ef8945 debug.h --- a/debug.h Sun Mar 26 21:13:16 2006 +0000 +++ b/debug.h Sun Mar 26 21:15:09 2006 +0000 @@ -26,4 +26,27 @@ 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 */ diff -r 8e89a10f9e4c -r b20541ef8945 functions.h --- a/functions.h Sun Mar 26 21:13:16 2006 +0000 +++ b/functions.h Sun Mar 26 21:15:09 2006 +0000 @@ -116,12 +116,6 @@ uint32 InteractiveRandom(void); /* Used for random sequences that are not the same on the other end of the multiplayer link */ uint InteractiveRandomRange(uint max); - -// Used for profiling -#define TIC() { extern uint32 _rdtsc(void); uint32 _xxx_ = _rdtsc(); static float __avg__; -#define TOC(s) _xxx_ = _rdtsc() - _xxx_; __avg__=__avg__*0.99+_xxx_*0.01; printf("%s: %8d %f\n", s, _xxx_,__avg__); } - - void SetDate(uint date); /* facedraw.c */ void DrawPlayerFace(uint32 face, int color, int x, int y); diff -r 8e89a10f9e4c -r b20541ef8945 openttd.dsp --- a/openttd.dsp Sun Mar 26 21:13:16 2006 +0000 +++ b/openttd.dsp Sun Mar 26 21:15:09 2006 +0000 @@ -339,6 +339,12 @@ # End Source File # Begin Source File +SOURCE=.\os_timer.c +# End Source File +# Begin Source File + +# Begin Source File + SOURCE=.\pathfind.c # End Source File # Begin Source File diff -r 8e89a10f9e4c -r b20541ef8945 openttd.vcproj --- a/openttd.vcproj Sun Mar 26 21:13:16 2006 +0000 +++ b/openttd.vcproj Sun Mar 26 21:15:09 2006 +0000 @@ -299,6 +299,9 @@ RelativePath=".\ottdres.rc"> + +