summaryrefslogtreecommitdiff
path: root/PACKAGING
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2020-03-22 15:05:06 +0100
committerAkim Demaille <akim.demaille@gmail.com>2020-03-22 15:59:22 +0100
commit5acc29041e942190cb7f03cebdafab443129ed22 (patch)
treec321a2133b268aa9eeb4e0aa34170479a33b186a /PACKAGING
parent5b0b0a1e08195fd31ff4a8c171a390d8f2aa7ec9 (diff)
downloadbison-5acc29041e942190cb7f03cebdafab443129ed22.tar.gz
bench: calc: work on a string instead of a file
The cost of the file layer is large and makes benchmarks too coarse, as seen for in following example, first with a file, then with a literal string: 0. %skeleton "yacc.c" %define parse.lac full 1. %skeleton "yacc-v1.c" %define nofinal %define parse.lac full 2. %skeleton "yacc-v2.c" %define nofinal %define parse.lac full 3. %skeleton "yacc-v3.c" %define nofinal %define parse.lac full 4. %skeleton "yacc.c" 5. %skeleton "yacc-v1.c" %define nofinal 6. %skeleton "yacc-v2.c" %define nofinal 7. %skeleton "yacc-v3.c" %define nofinal -------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------- BM_y0 32558 ns 32537 ns 21228 BM_y1 32400 ns 32369 ns 21233 BM_y2 33485 ns 33464 ns 20625 BM_y3 32139 ns 32125 ns 21446 BM_y4 31343 ns 31329 ns 21747 BM_y5 31344 ns 31317 ns 22035 BM_y6 31287 ns 31255 ns 22039 BM_y7 31387 ns 31373 ns 22178 -------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------- BM_y0 10642 ns 10634 ns 63601 BM_y1 10657 ns 10654 ns 63625 BM_y2 10441 ns 10432 ns 65957 BM_y3 10558 ns 10554 ns 64546 BM_y4 9521 ns 9516 ns 72011 BM_y5 9179 ns 9157 ns 75028 BM_y6 9360 ns 9356 ns 73770 BM_y7 9365 ns 9359 ns 72609 Of course, at the same time it is less realistic: most users read files rather that strings, so it might lead to us to pay attention to costs most people don't see. * etc/bench.pl.in (&calc_input): Output into a file given as argument. Output in C syntax. (&generate_grammar_calc): Use it. Simplify the grammar: remove operators we don't care about. Rewrite the scanner to work on a char* instead of a FILE*.
Diffstat (limited to 'PACKAGING')
0 files changed, 0 insertions, 0 deletions