Skip to content

dburgener/parse-rosetta-rs

 
 

Repository files navigation

Rust Parsing Benchmarks

This repo tries to assess Rust parsing performance.

crate parser type action code integration input type precedence climbing parameterized rules streaming input
chumsky combinators in source library &str ? ? ?
combine combiantors in source library &str ? ? ?
lalrpop LR(1) in grammar build script &str No Yes No
nom combinators in source library &[u8], custom No Yes Yes
peg PEG in grammar proc macro (block) &str, &[T], custom Yes Yes No
pest PEG external proc macro (file) &str Yes No No
pom combiantors in source library &str ? ? ?
winnow combinators in source library &str, &[T], custom No Yes Yes
yap combinators in source library &str, &[T], custom No Yes ?

Results

Name Overhead (release) Build (debug) Parse (release) Downloads Version
null 0 KiB 332ms 26ms - -
chumsky 788 KiB 8s 1s Download count v0.2.0
combine 227 KiB 5s 855ms Download count v3.8.1
nom 158 KiB 2s 881ms Download count v7.1.3
peg 33 KiB 3s 18ms Download count v0.8.1
pest 157 KiB 5s 808ms Download count v2.6.0
pom 215 KiB 845ms 2s Download count v3.2.0
winnow 136 KiB 2s 749ms Download count v0.5.0
yap 89 KiB 647ms 775ms Download count v0.10.0

System: Linux 5.4.0-124-generic (x86_64) w/ -j 8

Note:

  • For more "Parse (release)" comparisons, see parser_benchmarks
  • Parsers have not been validated and might have differing levels of quality (#5)

Running the Benchmarks

$ ./bench.py
$ ./format.py

About

Comparing parser APIs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%