21{
23 return -1;
24 }
25
26 long long *
elapsed_cyc, total_cyc = 0, uniq_cyc = 0, diff_cyc = 0;
28 double min, max, average, std,
tmp;
29
31
32
33 switch ( flag ) {
34 case 0:
37 break;
38 case 1:
41 break;
42 case 2:
45 break;
46 case 3:
49 break;
50 default:
52 return -1;
53
54 }
55
57
61 fprintf(
stderr,
"Error! Negative elapsed time\n");
63 return -1;
64 }
65
68 min = ( double ) diff_cyc;
69 if ( max < diff_cyc )
70 max = ( double ) diff_cyc;
71 if ( diff_cyc != 0 )
72 uniq_cyc++;
73 total_cyc += diff_cyc;
74 }
75
76 average = ( double ) total_cyc / (
NUM_ITERS - 1 );
77 std = 0;
78
83 }
84
87 printf(
"%s: min %.3lf max %.3lf \n",
func_name[flag],
min, max );
88 printf( " average %.3lf std %.3lf\n", average, std );
89
91 printf(
"%s : %7.3f <%7.3f\n",
func_name[flag],
92 (
double ) total_cyc / (
double ) (
NUM_ITERS ),
93 ( double ) total_cyc / ( double ) uniq_cyc );
94 } else if ( uniq_cyc ) {
95 printf(
"%s : %7.3f %7.3f\n",
func_name[flag],
96 (
double ) total_cyc / (
double ) (
NUM_ITERS ),
97 ( double ) total_cyc / ( double ) uniq_cyc );
98 } else {
99 printf(
"%s : %7.3f >%7.3f\n",
func_name[flag],
100 (
double ) total_cyc / (
double ) (
NUM_ITERS ),
101 ( double ) total_cyc );
102 }
103 }
104
106
108}
get real time counter value in clock cycles Returns the total real time passed since some arbitrary s...
get real time counter value in microseconds
get virtual time counter value in clock cycles
get virtual time counter values in microseconds
static char * func_name[]