@@ -74,6 +74,9 @@ static void *huge_malloc(BLASLONG size){
7474
7575#if defined(__WIN32__ ) || defined(__WIN64__ ) || !defined(_POSIX_TIMERS )
7676 struct timeval start , stop ;
77+ #elif defined(__APPLE__ )
78+ mach_timebase_info_data_t info ;
79+ uint64_t start = 0 , stop = 0 ;
7780#else
7881 struct timespec start = { 0 , 0 }, stop = { 0 , 0 };
7982#endif
@@ -82,6 +85,9 @@ double getsec()
8285{
8386#if defined(__WIN32__ ) || defined(__WIN64__ ) || !defined(_POSIX_TIMERS )
8487 return (double )(stop .tv_sec - start .tv_sec ) + (double )((stop .tv_usec - start .tv_usec )) * 1.e-6 ;
88+ #elif defined(__APPLE__ )
89+ mach_timebase_info (& info );
90+ return (double )(((stop - start ) * info .numer )/info .denom ) * 1.e-9 ;
8591#else
8692 return (double )(stop .tv_sec - start .tv_sec ) + (double )((stop .tv_nsec - start .tv_nsec )) * 1.e-9 ;
8793#endif
@@ -90,6 +96,8 @@ double getsec()
9096void begin () {
9197#if defined(__WIN32__ ) || defined(__WIN64__ ) || !defined(_POSIX_TIMERS )
9298 gettimeofday ( & start , (struct timezone * )0 );
99+ #elif defined(__APPLE__ )
100+ start = clock_gettime_nsec_np (CLOCK_UPTIME_RAW );
93101#else
94102 clock_gettime (CLOCK_REALTIME , & start );
95103#endif
@@ -98,7 +106,9 @@ void begin() {
98106void end () {
99107#if defined(__WIN32__ ) || defined(__WIN64__ ) || !defined(_POSIX_TIMERS )
100108 gettimeofday ( & stop , (struct timezone * )0 );
109+ #elif defined(__APPLE__ )
110+ stop = clock_gettime_nsec_np (CLOCK_UPTIME_RAW );
101111#else
102112 clock_gettime (CLOCK_REALTIME , & stop );
103113#endif
104- }
114+ }
0 commit comments