@@ -129,7 +129,10 @@ int main(int argc, char *argv[]){
129
129
int step = 1 ;
130
130
131
131
struct timeval start , stop ;
132
- double time1 ,timeg ;
132
+ double time1 = 0.0 , timeg = 0.0 ;
133
+ long nanos = 0 ;
134
+ time_t seconds = 0 ;
135
+ struct timespec time_start = { 0 , 0 }, time_end = { 0 , 0 };
133
136
134
137
argc -- ;argv ++ ;
135
138
@@ -163,35 +166,32 @@ int main(int argc, char *argv[]){
163
166
timeg = 0 ;
164
167
165
168
fprintf (stderr , " %6d : " , (int )m );
169
+ for (i = 0 ; i < m * COMPSIZE * abs (inc_x ); i ++ ){
170
+ x [i ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
171
+ }
166
172
173
+ for (i = 0 ; i < m * COMPSIZE * abs (inc_y ); i ++ ){
174
+ y [i ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
175
+ }
167
176
168
177
for (l = 0 ; l < loops ; l ++ )
169
178
{
179
+ clock_gettime (CLOCK_REALTIME , & time_start );
180
+ COPY (& m , x , & inc_x , y , & inc_y );
181
+ clock_gettime (CLOCK_REALTIME , & time_end );
170
182
171
- for (i = 0 ; i < m * COMPSIZE * abs (inc_x ); i ++ ){
172
- x [i ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
173
- }
183
+ nanos = time_end .tv_nsec - time_start .tv_nsec ;
184
+ seconds = time_end .tv_sec - time_start .tv_sec ;
174
185
175
- for (i = 0 ; i < m * COMPSIZE * abs (inc_y ); i ++ ){
176
- y [i ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
177
- }
178
- gettimeofday ( & start , (struct timezone * )0 );
186
+ time1 = seconds + nanos / 1.e9 ;
187
+ timeg += time1 ;
188
+ }
179
189
180
- COPY ( & m , x , & inc_x , y , & inc_y ) ;
190
+ timeg /= loops ;
181
191
182
- gettimeofday ( & stop , (struct timezone * )0 );
183
-
184
- time1 = (double )(stop .tv_sec - start .tv_sec ) + (double )((stop .tv_usec - start .tv_usec )) * 1.e-6 ;
185
-
186
- timeg += time1 ;
187
-
188
- }
189
-
190
- timeg /= loops ;
191
-
192
- fprintf (stderr ,
193
- " %10.2f MBytes %10.6f sec\n" ,
194
- COMPSIZE * sizeof (FLOAT ) * 1. * (double )m / timeg * 1.e-6 , timeg );
192
+ fprintf (stderr ,
193
+ " %10.2f MBytes %12.9f sec\n" ,
194
+ COMPSIZE * sizeof (FLOAT ) * 1. * (double )m / timeg / 1.e6 , timeg );
195
195
196
196
}
197
197
0 commit comments