summaryrefslogtreecommitdiffstats
path: root/Modules/_hotshot.c
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-10-13 07:37:52 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-10-13 07:37:52 (GMT)
commit7d99ff27e8ed628ad076162cfdc6e246daa33108 (patch)
tree0010b2af9bdd0685f3c5f8c229ab7a7afbe0a437 /Modules/_hotshot.c
parentde26cfc1e12c19720d0deebe4b3be1e822dc90c8 (diff)
downloadcpython-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.c25
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