cbffe5e545
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.
81 lines
3.2 KiB
Text
81 lines
3.2 KiB
Text
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)
|