Skip to content

Commit 2654388

Browse files
committed
Saving...
1 parent a75ef43 commit 2654388

5 files changed

Lines changed: 25 additions & 5 deletions

File tree

benchmark/benchmark.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,27 +88,36 @@ uint64_t global_rdtsc_overhead = (uint64_t)UINT64_MAX;
8888
fflush(NULL); \
8989
uint64_t cycles_start, cycles_final, cycles_diff; \
9090
uint64_t min_diff = (uint64_t)-1; \
91+
uint64_t min_sumclockdiff = (uint64_t)-1; \
9192
uint64_t sum_diff = 0; \
93+
uint64_t sumclockdiff = 0; \
9294
for (int i = 0; i < repeat; i++) { \
9395
pre; \
9496
__asm volatile("" ::: /* pretend to clobber */ "memory"); \
97+
uint64_t bef = clock(); \
9598
RDTSC_START(cycles_start); \
9699
if (test != expected) { \
97100
printf("not expected (%d , %d )", (int)test, (int)expected); \
98101
break; \
99102
} \
100103
RDTSC_STOP(cycles_final); \
104+
uint64_t aft = clock(); \
105+
sumclockdiff += (aft - bef) ; \
106+
if (sumclockdiff < min_sumclockdiff) \
107+
min_sumclockdiff = sumclockdiff; \
101108
cycles_diff = (cycles_final - cycles_start - global_rdtsc_overhead); \
102109
if (cycles_diff < min_diff) \
103110
min_diff = cycles_diff; \
104-
sum_diff += cycles_diff; \
111+
sum_diff += cycles_diff; \
105112
} \
106113
uint64_t S = size; \
107114
float cycle_per_op = (min_diff) / (double)S; \
108115
float avg_cycle_per_op = (sum_diff) / ((double)S * repeat); \
116+
float avg_gb_per_s = (CLOCKS_PER_SEC * (double)S * repeat) / ((sumclockdiff) * 1000.0 * 1000.0 * 1000.0); \
117+
float max_gb_per_s = (CLOCKS_PER_SEC * (double)S) / ((min_sumclockdiff) * 1000.0 * 1000.0 * 1000.0); \
109118
if (verbose) printf(" %.3f %s per input byte (best) ", cycle_per_op, unitname); \
110119
if (verbose) printf(" %.3f %s per input byte (avg) ", avg_cycle_per_op, unitname); \
111-
if (!verbose) printf(" %.3f ", cycle_per_op); \
120+
if (!verbose) printf(" %.3f %.3f %.3f %.3f ", cycle_per_op, avg_cycle_per_op-cycle_per_op ,max_gb_per_s,avg_gb_per_s-max_gb_per_s); \
112121
printf("\n"); \
113122
fflush(NULL); \
114123
} while (0)

benchmark/distinctuseridcompetition.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,11 @@ int main(int argc, char *argv[]) {
267267
assert(s1 == s3);
268268
size_t size = s1.size();
269269

270-
int repeat = 10;
270+
int repeat = 50;
271271
int volume = p.size();
272+
if(justdata) {
273+
printf("name cycles_per_byte cycles_per_byte_err gb_per_s gb_per_s_err \n");
274+
}
272275
BEST_TIME("simdjson ", simdjson_computestats(p).size(), size, , repeat,
273276
volume, !justdata);
274277

benchmark/minifiercompetition.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,11 @@ int main(int argc, char *argv[]) {
8787
memcpy(buffer, p.data(), p.size());
8888
buffer[p.size()] = '\0';
8989

90-
int repeat = 10;
90+
int repeat = 50;
9191
int volume = p.size();
92-
92+
if(justdata) {
93+
printf("name cycles_per_byte cycles_per_byte_err gb_per_s gb_per_s_err \n");
94+
}
9395
size_t strlength = rapidstringme((char *)p.data()).size();
9496
if (verbose)
9597
std::cout << "input length is " << p.size() << " stringified length is "

benchmark/parseandstatcompetition.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,9 @@ int main(int argc, char *argv[]) {
291291
assert(stat_equal(s1, s3));
292292
int repeat = 50;
293293
int volume = p.size();
294+
if(justdata) {
295+
printf("name cycles_per_byte cycles_per_byte_err gb_per_s gb_per_s_err \n");
296+
}
294297
BEST_TIME("simdjson ", simdjson_computestats(p).valid, true, , repeat,
295298
volume, !justdata);
296299
BEST_TIME("RapidJSON ", rapid_computestats(p).valid, true, , repeat, volume,

benchmark/parsingcompetition.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ int main(int argc, char *argv[]) {
9494
}
9595
int repeat = 50;
9696
int volume = p.size();
97+
if(justdata) {
98+
printf("name cycles_per_byte cycles_per_byte_err gb_per_s gb_per_s_err \n");
99+
}
97100
if(!justdata) BEST_TIME("simdjson (dynamic mem) ", build_parsed_json(p).isValid(), true, ,
98101
repeat, volume, !justdata);
99102
// (static alloc)

0 commit comments

Comments
 (0)