diff options
-rw-r--r-- | .bzrignore | 1 | ||||
-rw-r--r-- | client/mysqltest.c | 2 | ||||
-rw-r--r-- | include/config-win.h | 4 | ||||
-rw-r--r-- | mysys/my_getsystime.c | 34 |
4 files changed, 15 insertions, 26 deletions
diff --git a/.bzrignore b/.bzrignore index 6e09cdd7b5d..038627aade2 100644 --- a/.bzrignore +++ b/.bzrignore @@ -3012,3 +3012,4 @@ win/vs8cache.txt ylwrap zlib/*.ds? zlib/*.vcproj +libmysqld/sql_profile.cc diff --git a/client/mysqltest.c b/client/mysqltest.c index f6af4b430c4..9b96810e732 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -7330,7 +7330,7 @@ void timer_output(void) ulonglong timer_now(void) { - return my_getsystime() / 10000; + return my_micro_time() / 1000; } diff --git a/include/config-win.h b/include/config-win.h index e0558ca4564..246e4da76a9 100644 --- a/include/config-win.h +++ b/include/config-win.h @@ -257,9 +257,11 @@ inline double ulonglong2double(ulonglong value) #define tell(A) _telli64(A) #endif - #define STACK_DIRECTION -1 +/* Difference between GetSystemTimeAsFileTime() and now() */ +#define OFFSET_TO_EPOCH ULL(116444736000000000) + /* Optimized store functions for Intel x86 */ #ifndef _WIN64 diff --git a/mysys/my_getsystime.c b/mysys/my_getsystime.c index 4fdd979f4bb..e4f6abd1d68 100644 --- a/mysys/my_getsystime.c +++ b/mysys/my_getsystime.c @@ -41,7 +41,7 @@ ulonglong my_getsystime() { QueryPerformanceCounter(&t_cnt); return ((t_cnt.QuadPart / query_performance_frequency * 10000000) + - (t_cnt.QuadPart % query_performance_frequency * 10000000 / + ((t_cnt.QuadPart % query_performance_frequency) * 10000000 / query_performance_frequency) + query_performance_offset); } return 0; @@ -108,21 +108,14 @@ time_t my_time(myf flags __attribute__((unused))) ulonglong my_micro_time() { - ulonglong newtime; #if defined(__WIN__) - if (query_performance_frequency) - { - QueryPerformanceCounter((LARGE_INTEGER*) &newtime); - return ((newtime / query_performance_frequency * 10000000) + - (newtime % query_performance_frequency * 10000000 / - query_performance_frequency)); - } - else - newtime= (GetTickCount() * 1000); /* GetTickCount only returns millisec */ - return newtime; + ulonglong newtime; + GetSystemTimeAsFileTime((FILETIME*)&newtime); + return (newtime/10); #elif defined(HAVE_GETHRTIME) return gethrtime()/1000; #else + ulonglong newtime; struct timeval t; /* The following loop is here because gettimeofday may fail on some systems @@ -161,19 +154,11 @@ ulonglong my_micro_time() ulonglong my_micro_time_and_time(time_t *time_arg) { - ulonglong newtime; #if defined(__WIN__) - if (query_performance_frequency) - { - QueryPerformanceCounter((LARGE_INTEGER*) &newtime); - return ((newtime / query_performance_frequency * 10000000) + - (newtime % query_performance_frequency * 10000000 / - query_performance_frequency)); - } - else - newtime= (GetTickCount() * 1000); /* GetTickCount only returns millisec. */ - (void) time(time_arg); - return newtime; + ulonglong newtime; + GetSystemTimeAsFileTime((FILETIME*)&newtime); + *time_arg= (newtime-OFFSET_TO_EPOCH)/10000000; + return (newtime/10); #elif defined(HAVE_GETHRTIME) /* Solaris has a very slow time() call. We optimize this by using the very @@ -194,6 +179,7 @@ ulonglong my_micro_time_and_time(time_t *time_arg) pthread_mutex_unlock(&THR_LOCK_time); return cur_gethrtime/1000; #else + ulonglong newtime; struct timeval t; /* The following loop is here because gettimeofday may fail on some systems |