Commit 641bc9a4 authored by unknown's avatar unknown

Fixed a previous patch.


BitKeeper/etc/ignore:
  added libmysqld/sql_profile.cc
client/mysqltest.c:
  Use my_micro_time() instead of my_getsystime() for
  faster execution.
include/config-win.h:
  Moved a definition into a header file.
mysys/my_getsystime.c:
  Use GetSystemTimeAsFileTime() instead of QueryPerformanceCounter()
  for faster execution.
parent ad144fa6
...@@ -3012,3 +3012,4 @@ win/vs8cache.txt ...@@ -3012,3 +3012,4 @@ win/vs8cache.txt
ylwrap ylwrap
zlib/*.ds? zlib/*.ds?
zlib/*.vcproj zlib/*.vcproj
libmysqld/sql_profile.cc
...@@ -7330,7 +7330,7 @@ void timer_output(void) ...@@ -7330,7 +7330,7 @@ void timer_output(void)
ulonglong timer_now(void) ulonglong timer_now(void)
{ {
return my_getsystime() / 10000; return my_micro_time() / 1000;
} }
......
...@@ -257,9 +257,11 @@ inline double ulonglong2double(ulonglong value) ...@@ -257,9 +257,11 @@ inline double ulonglong2double(ulonglong value)
#define tell(A) _telli64(A) #define tell(A) _telli64(A)
#endif #endif
#define STACK_DIRECTION -1 #define STACK_DIRECTION -1
/* Difference between GetSystemTimeAsFileTime() and now() */
#define OFFSET_TO_EPOCH ULL(116444736000000000)
/* Optimized store functions for Intel x86 */ /* Optimized store functions for Intel x86 */
#ifndef _WIN64 #ifndef _WIN64
......
...@@ -41,7 +41,7 @@ ulonglong my_getsystime() ...@@ -41,7 +41,7 @@ ulonglong my_getsystime()
{ {
QueryPerformanceCounter(&t_cnt); QueryPerformanceCounter(&t_cnt);
return ((t_cnt.QuadPart / query_performance_frequency * 10000000) + 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); query_performance_frequency) + query_performance_offset);
} }
return 0; return 0;
...@@ -108,21 +108,14 @@ time_t my_time(myf flags __attribute__((unused))) ...@@ -108,21 +108,14 @@ time_t my_time(myf flags __attribute__((unused)))
ulonglong my_micro_time() ulonglong my_micro_time()
{ {
ulonglong newtime;
#if defined(__WIN__) #if defined(__WIN__)
if (query_performance_frequency) ulonglong newtime;
{ GetSystemTimeAsFileTime((FILETIME*)&newtime);
QueryPerformanceCounter((LARGE_INTEGER*) &newtime); return (newtime/10);
return ((newtime / query_performance_frequency * 10000000) +
(newtime % query_performance_frequency * 10000000 /
query_performance_frequency));
}
else
newtime= (GetTickCount() * 1000); /* GetTickCount only returns millisec */
return newtime;
#elif defined(HAVE_GETHRTIME) #elif defined(HAVE_GETHRTIME)
return gethrtime()/1000; return gethrtime()/1000;
#else #else
ulonglong newtime;
struct timeval t; struct timeval t;
/* /*
The following loop is here because gettimeofday may fail on some systems The following loop is here because gettimeofday may fail on some systems
...@@ -161,19 +154,11 @@ ulonglong my_micro_time() ...@@ -161,19 +154,11 @@ ulonglong my_micro_time()
ulonglong my_micro_time_and_time(time_t *time_arg) ulonglong my_micro_time_and_time(time_t *time_arg)
{ {
ulonglong newtime;
#if defined(__WIN__) #if defined(__WIN__)
if (query_performance_frequency) ulonglong newtime;
{ GetSystemTimeAsFileTime((FILETIME*)&newtime);
QueryPerformanceCounter((LARGE_INTEGER*) &newtime); *time_arg= (newtime-OFFSET_TO_EPOCH)/10000000;
return ((newtime / query_performance_frequency * 10000000) + return (newtime/10);
(newtime % query_performance_frequency * 10000000 /
query_performance_frequency));
}
else
newtime= (GetTickCount() * 1000); /* GetTickCount only returns millisec. */
(void) time(time_arg);
return newtime;
#elif defined(HAVE_GETHRTIME) #elif defined(HAVE_GETHRTIME)
/* /*
Solaris has a very slow time() call. We optimize this by using the very 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) ...@@ -194,6 +179,7 @@ ulonglong my_micro_time_and_time(time_t *time_arg)
pthread_mutex_unlock(&THR_LOCK_time); pthread_mutex_unlock(&THR_LOCK_time);
return cur_gethrtime/1000; return cur_gethrtime/1000;
#else #else
ulonglong newtime;
struct timeval t; struct timeval t;
/* /*
The following loop is here because gettimeofday may fail on some systems The following loop is here because gettimeofday may fail on some systems
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment