@@ -128,8 +128,13 @@ int main(int argc, char *argv[]){
128
128
int to = 200 ;
129
129
int step = 1 ;
130
130
131
+ #if defined(__WIN32__ ) || defined(__WIN64__ ) || !defined(_POSIX_TIMERS )
131
132
struct timeval start , stop ;
132
133
double time1 ,timeg ;
134
+ #else
135
+ struct timespec start = { 0 , 0 }, stop = { 0 , 0 };
136
+ double time1 , timeg ;
137
+ #endif
133
138
134
139
argc -- ;argv ++ ;
135
140
@@ -160,26 +165,30 @@ int main(int argc, char *argv[]){
160
165
161
166
fprintf (stderr , " %6d : " , (int )m );
162
167
163
-
164
168
for (l = 0 ; l < loops ; l ++ )
165
169
{
166
170
167
171
for (i = 0 ; i < m * COMPSIZE * abs (inc_x ); i ++ ){
168
172
x [i ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
169
173
}
170
-
174
+ #if defined( __WIN32__ ) || defined( __WIN64__ ) || !defined( _POSIX_TIMERS )
171
175
gettimeofday ( & start , (struct timezone * )0 );
172
-
176
+ #else
177
+ clock_gettime (CLOCK_REALTIME , & start );
178
+ #endif
173
179
result = ASUM (& m , x , & inc_x );
174
-
175
- gettimeofday ( & stop , (struct timezone * )0 );
176
-
177
- time1 = (double )(stop .tv_sec - start .tv_sec ) + (double )((stop .tv_usec - start .tv_usec )) * 1.e-6 ;
180
+ #if defined(__WIN32__ ) || defined(__WIN64__ ) || !defined(_POSIX_TIMERS )
181
+ clock_gettime (CLOCK_REALTIME , & stop );
182
+ time1 = (double )(stop .tv_sec - start .tv_sec ) + (double )((stop .tv_usec - start .tv_usec )) * 1.e-6 ;
183
+ #else
184
+ gettimeofday ( & stop , (struct timezone * )0 );
185
+ time1 = (double )(stop .tv_sec - start .tv_sec ) + (double )((stop .tv_nsec - start .tv_nsec )) / 1.e9 ;
186
+ #endif
178
187
179
188
timeg += time1 ;
180
189
181
190
}
182
-
191
+ if ( loops > 1 )
183
192
timeg /= loops ;
184
193
185
194
#ifdef COMPLEX
0 commit comments