@@ -24,7 +24,7 @@ static int64_t gettime_i64(void) {
24
24
/* Format fixed point number. */
25
25
void print_number (const int64_t x ) {
26
26
int64_t x_abs , y ;
27
- int c , i , rounding ;
27
+ int c , i , rounding , g ; /* g = integer part size, c = fractional part size */
28
28
size_t ptr ;
29
29
char buffer [30 ];
30
30
@@ -56,21 +56,27 @@ void print_number(const int64_t x) {
56
56
/* Format and print the number. */
57
57
ptr = sizeof (buffer ) - 1 ;
58
58
buffer [ptr ] = 0 ;
59
- if (c != 0 ) {
59
+ g = 0 ;
60
+ if (c != 0 ) { /* non zero fractional part */
60
61
for (i = 0 ; i < c ; ++ i ) {
61
62
buffer [-- ptr ] = '0' + (y % 10 );
62
63
y /= 10 ;
63
64
}
64
- buffer [-- ptr ] = '.' ;
65
+ } else if (c == 0 ) { /* fractional part is 0 */
66
+ buffer [-- ptr ] = '0' ;
65
67
}
68
+ buffer [-- ptr ] = '.' ;
66
69
do {
67
70
buffer [-- ptr ] = '0' + (y % 10 );
68
71
y /= 10 ;
72
+ g ++ ;
69
73
} while (y != 0 );
70
74
if (x < 0 ) {
71
75
buffer [-- ptr ] = '-' ;
76
+ g ++ ;
72
77
}
73
- printf ("%s" , & buffer [ptr ]);
78
+ printf ("%5.*s" , g , & buffer [ptr ]); /* Prints integer part */
79
+ printf ("%-*s" , FP_EXP , & buffer [ptr + g ]); /* Prints fractional part */
74
80
}
75
81
76
82
void run_benchmark (char * name , void (* benchmark )(void * , int ), void (* setup )(void * ), void (* teardown )(void * , int ), void * data , int count , int iter ) {
@@ -97,13 +103,14 @@ void run_benchmark(char *name, void (*benchmark)(void*, int), void (*setup)(void
97
103
}
98
104
sum += total ;
99
105
}
100
- printf ("%s: min " , name );
106
+ /* ',' is used as a column delimiter */
107
+ printf ("%-30s, " , name );
101
108
print_number (min * FP_MULT / iter );
102
- printf ("us / avg " );
109
+ printf (" , " );
103
110
print_number (((sum * FP_MULT ) / count ) / iter );
104
- printf ("us / max " );
111
+ printf (" , " );
105
112
print_number (max * FP_MULT / iter );
106
- printf ("us \n" );
113
+ printf ("\n" );
107
114
}
108
115
109
116
int have_flag (int argc , char * * argv , char * flag ) {
@@ -130,4 +137,13 @@ int get_iters(int default_iters) {
130
137
}
131
138
}
132
139
140
+ void print_output_table_header_row (void ) {
141
+ char * bench_str = "Benchmark" ; /* left justified */
142
+ char * min_str = " Min(us) " ; /* center alignment */
143
+ char * avg_str = " Avg(us) " ;
144
+ char * max_str = " Max(us) " ;
145
+ printf ("%-30s,%-15s,%-15s,%-15s\n" , bench_str , min_str , avg_str , max_str );
146
+ printf ("\n" );
147
+ }
148
+
133
149
#endif /* SECP256K1_BENCH_H */
0 commit comments