1
1
#include <binsparse/binsparse.h>
2
+ #include <stdlib.h>
2
3
#include <time.h>
3
4
4
5
double gettime () {
@@ -11,7 +12,40 @@ int compar(const void* a, const void* b) {
11
12
double x = * ((const double * ) a );
12
13
double y = * ((const double * ) b );
13
14
14
- return x - y ;
15
+ double diff = x - y ;
16
+
17
+ if (diff > 0 ) {
18
+ return 1 ;
19
+ } else if (diff < 0 ) {
20
+ return -1 ;
21
+ } else {
22
+ return 0 ;
23
+ }
24
+ }
25
+
26
+ double compute_variance (double * x , size_t n ) {
27
+ double sum = 0 ;
28
+
29
+ for (size_t i = 0 ; i < n ; i ++ ) {
30
+ sum += x [i ];
31
+ }
32
+
33
+ double mean = sum / n ;
34
+
35
+ double sum_of_squares = 0 ;
36
+ for (size_t i = 0 ; i < n ; i ++ ) {
37
+ sum_of_squares += (x [i ] - mean ) * (x [i ] - mean );
38
+ }
39
+
40
+ return sum_of_squares / (n - 1 );
41
+ }
42
+
43
+ void flush_cache () {
44
+ #ifdef __APPLE__
45
+ system ("bash -c \"sync && sudo purge\"" );
46
+ #else
47
+ static_assert (false);
48
+ #endif
15
49
}
16
50
17
51
int main (int argc , char * * argv ) {
@@ -29,17 +63,32 @@ int main(int argc, char** argv) {
29
63
double durations [num_trials ];
30
64
31
65
for (size_t i = 0 ; i < num_trials ; i ++ ) {
66
+ flush_cache ();
32
67
double begin = gettime ();
33
68
bsp_matrix_t mat = bsp_read_matrix (file_name , NULL );
34
69
double end = gettime ();
35
70
durations [i ] = end - begin ;
36
71
bsp_destroy_matrix_t (mat );
37
72
}
38
73
74
+ printf ("[" );
75
+ for (size_t i = 0 ; i < num_trials ; i ++ ) {
76
+ printf ("%lf" , durations [i ]);
77
+ if (i + 1 < num_trials ) {
78
+ printf (", " );
79
+ }
80
+ }
81
+ printf ("]\n" );
82
+
39
83
qsort (durations , num_trials , sizeof (double ), compar );
40
84
85
+ double variance = compute_variance (durations , num_trials );
86
+
41
87
printf ("Read file in %lf seconds\n" , durations [num_trials / 2 ]);
42
88
89
+ printf ("Variance is %lf seconds, standard devication is %lf seconds\n" ,
90
+ variance , sqrt (variance ));
91
+
43
92
printf ("[" );
44
93
for (size_t i = 0 ; i < num_trials ; i ++ ) {
45
94
printf ("%lf" , durations [i ]);
0 commit comments