diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-10-13 07:37:52 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-10-13 07:37:52 (GMT) |
commit | 7d99ff27e8ed628ad076162cfdc6e246daa33108 (patch) | |
tree | 0010b2af9bdd0685f3c5f8c229ab7a7afbe0a437 /Modules/_hotshot.c | |
parent | de26cfc1e12c19720d0deebe4b3be1e822dc90c8 (diff) | |
download | cpython-7d99ff27e8ed628ad076162cfdc6e246daa33108.zip cpython-7d99ff27e8ed628ad076162cfdc6e246daa33108.tar.gz cpython-7d99ff27e8ed628ad076162cfdc6e246daa33108.tar.bz2 |
Speed the Windows code by using native 64-bit int compiler support instead
of calling external functions.
Diffstat (limited to 'Modules/_hotshot.c')
-rw-r--r-- | Modules/_hotshot.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c index 5ebddcd..4a6d7fc 100644 --- a/Modules/_hotshot.c +++ b/Modules/_hotshot.c @@ -20,8 +20,12 @@ #include <windows.h> #include <largeint.h> #include <direct.h> /* for getcwd() */ -typedef LARGE_INTEGER hs_time; -#define GETTIMEOFDAY(p) QueryPerformanceCounter(p) +typedef __int64 hs_time; +#define GETTIMEOFDAY(P_HS_TIME) \ + { LARGE_INTEGER _temp; \ + QueryPerformanceCounter(&_temp); \ + *(P_HS_TIME) = _temp.QuadPart; } + #else #ifndef HAVE_GETTIMEOFDAY @@ -664,12 +668,11 @@ get_tdelta(ProfilerObject *self) int tdelta; #ifdef MS_WIN32 hs_time tv; - LARGE_INTEGER diff; + hs_time diff; - QueryPerformanceCounter(&tv); - diff = LargeIntegerSubtract(tv, self->prev_timeofday); - - tdelta = diff.LowPart; + GETTIMEOFDAY(&tv); + diff = tv - self->prev_timeofday; + tdelta = (int)diff; #else struct timeval tv; @@ -764,7 +767,7 @@ calibrate(void) hs_time tv1, tv2; #ifdef MS_WIN32 - LARGE_INTEGER diff; + hs_time diff; QueryPerformanceFrequency(&frequency); #endif @@ -772,9 +775,9 @@ calibrate(void) while (1) { GETTIMEOFDAY(&tv2); #ifdef MS_WIN32 - diff = LargeIntegerSubtract(tv2, tv1); - if (!LargeIntegerEqualToZero(diff)) { - timeofday_diff = diff.LowPart; + diff = tv2 - tv1; + if (diff != 0) { + timeofday_diff = (unsigned long)diff; break; } #else |