| @@ -74,6 +74,9 @@ static void *huge_malloc(BLASLONG size){ | |||||
| #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | ||||
| struct timeval start, stop; | struct timeval start, stop; | ||||
| #elif defined(__APPLE__) | |||||
| mach_timebase_info_data_t info; | |||||
| uint64_t start = 0, stop = 0; | |||||
| #else | #else | ||||
| struct timespec start = { 0, 0 }, stop = { 0, 0 }; | struct timespec start = { 0, 0 }, stop = { 0, 0 }; | ||||
| #endif | #endif | ||||
| @@ -82,6 +85,9 @@ double getsec() | |||||
| { | { | ||||
| #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | ||||
| return (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; | return (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; | ||||
| #elif defined(__APPLE__) | |||||
| mach_timebase_info(&info); | |||||
| return (double)(((stop - start) * info.numer)/info.denom) * 1.e-9; | |||||
| #else | #else | ||||
| return (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_nsec - start.tv_nsec)) * 1.e-9; | return (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_nsec - start.tv_nsec)) * 1.e-9; | ||||
| #endif | #endif | ||||
| @@ -90,6 +96,8 @@ double getsec() | |||||
| void begin() { | void begin() { | ||||
| #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | ||||
| gettimeofday( &start, (struct timezone *)0); | gettimeofday( &start, (struct timezone *)0); | ||||
| #elif defined(__APPLE__) | |||||
| start = clock_gettime_nsec_np(CLOCK_UPTIME_RAW); | |||||
| #else | #else | ||||
| clock_gettime(CLOCK_REALTIME, &start); | clock_gettime(CLOCK_REALTIME, &start); | ||||
| #endif | #endif | ||||
| @@ -98,7 +106,9 @@ void begin() { | |||||
| void end() { | void end() { | ||||
| #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | #if defined(__WIN32__) || defined(__WIN64__) || !defined(_POSIX_TIMERS) | ||||
| gettimeofday( &stop, (struct timezone *)0); | gettimeofday( &stop, (struct timezone *)0); | ||||
| #elif defined(__APPLE__) | |||||
| stop = clock_gettime_nsec_np(CLOCK_UPTIME_RAW); | |||||
| #else | #else | ||||
| clock_gettime(CLOCK_REALTIME, &stop); | clock_gettime(CLOCK_REALTIME, &stop); | ||||
| #endif | #endif | ||||
| } | |||||
| } | |||||