mentat/tx-parser/benches.txt
Nick Alexander cbffe5e545 Use rust-peg for tx parsing.
There are few reasons to do this:

- it's difficult to add symbol interning to combine-based parsers like
  tx-parser -- literally every type changes to reflect the interner,
  and that means every convenience macro we've built needs to chagne.
  It's trivial to add interning to rust-peg-based parsers.

- combine has rolled forward to 3.2, and I spent a similar amount of
  time investigating how to upgrade tx-parser (to take advantage of
  the new parser! macros in combine that I think are necessary for
  adapting to changing types) as I did just converting to rust-peg.

- it's easy to improve the error messages in rust-peg, where-as I have
  tried twice to improve the nested error messages in combine and am
  stumped.

- it's roughly 4x faster to parse strings directly as opposed to
  edn::ValueAndSpan, and it'll be even better when we intern directly.
2018-05-10 10:24:05 -07:00

81 lines
3.2 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Before slices, release:
⋊> ~/M/mentat on cargo bench --package mentat_tx_parser
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/bench-0defa345d586a763
running 2 tests
test bench_parse1 ... bench: 7,745 ns/iter (+/- 2,515)
test bench_parse2 ... bench: 494,244 ns/iter (+/- 159,379)
test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured
Running target/release/deps/mentat_tx_parser-c3f614f12d05a17a
running 5 tests
test tests::test_add ... ignored
test tests::test_lookup_ref ... ignored
test tests::test_map_notation ... ignored
test tests::test_nested_vector ... ignored
test tests::test_retract ... ignored
test result: ok. 0 passed; 0 failed; 5 ignored; 0 measured
⋊> ~/M/mentat on cargo bench --package mentat_tx_parser
Finished release [optimized] target(s) in 0.0 secs
Running target/release/deps/bench-0defa345d586a763
running 2 tests
test bench_parse1 ... bench: 7,793 ns/iter (+/- 1,258)
test bench_parse2 ... bench: 532,144 ns/iter (+/- 110,614)
test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured
After slices, release:
⋊> ~/M/mentat on parse-faster cargo bench --package mentat_tx_parser 16:10:57
Compiling mentat_tx_parser v0.0.1 (file:///Users/nalexander/Mozilla/mentat/tx-parser)
Finished release [optimized + debuginfo] target(s) in 2.25 secs
Running target/release/deps/bench-0defa345d586a763
running 3 tests
test bench_parse1 ... bench: 1,413 ns/iter (+/- 92)
test bench_parse2 ... bench: 26,190 ns/iter (+/- 4,167)
test bench_parse3 ... bench: 51,823 ns/iter (+/- 7,000)
test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured
Running target/release/deps/mentat_tx_parser-c3f614f12d05a17a
running 1 test
test tests::test_add ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured
⋊> ~/M/mentat on parse-faster cargo bench --package mentat_tx_parser 16:16:35
Finished release [optimized + debuginfo] target(s) in 0.0 secs
Running target/release/deps/bench-0defa345d586a763
running 3 tests
test bench_parse1 ... bench: 1,410 ns/iter (+/- 164)
test bench_parse2 ... bench: 26,195 ns/iter (+/- 1,851)
test bench_parse3 ... bench: 51,680 ns/iter (+/- 12,190)
test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured
Running target/release/deps/mentat_tx_parser-c3f614f12d05a17a
running 1 test
test tests::test_add ... ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured
test bench_parse1 ... bench: 7,690 ns/iter (+/- 3,035)
test bench_parse2 ... bench: 548,920 ns/iter (+/- 282,846)
test bench_parse3 ... bench: 1,757,897 ns/iter (+/- 301,719)
test bench_parse4 ... bench: 6,957,627 ns/iter (+/- 1,162,660)
test bench_parse1 ... bench: 1,038 ns/iter (+/- 213)
test bench_parse2 ... bench: 18,647 ns/iter (+/- 3,971)
test bench_parse3 ... bench: 36,715 ns/iter (+/- 6,508)
test bench_parse4 ... bench: 79,502 ns/iter (+/- 19,525)