rosetta-rs/parse-rosetta-rs

Comparing parser APIs

Python

167

282 commits

updated Sep 2, 2026

See the code

README

Rust Parsing Benchmarks

This repo tries to assess Rust parsing performance.

crateparser typeaction codeintegrationinput typeprecedenceparameterized rulesstreaming input
chumskycombinatorsin sourcelibrary&str, &[u8], customprattYesYes
combinecombinatorsin sourcelibrary&str???
grmtoolsCFGin grammarlibrary????
lalrpopLR(1)in grammarbuild script&strnoneYesNo
lelwelLL(1)in sourcebuild script&strprattNoNo
logoslexerin sourceproc macro&str, &[u8]???
nomcombinatorsin sourcelibrary&str, &[u8], customprattYesYes
parolLL(k)/LALR(1)in sourcebuild script&strclimbingNoNo
pegPEGin grammarproc macro (block)&str, &[T], customclimbingYesNo
pestPEGexternalproc macro (file)&strclimbingNoNo
winnowcombinatorsin sourcelibrary&str, &[T], customnoneYesYes
yapcombinatorsin sourcelibrary&str, &[T], customnoneYes?

Formerly, we compared:

  • pom: lack of notoriety

Results

NameOverhead (release)Build (debug)Parse (release)DownloadsVersion
null0 KiB164ms2ms--
grmtools2,612 KiB10s182msDownload countv0.14.1
chumsky161 KiB5s47msDownload countv0.12.0
combine175 KiB4s53msDownload countv3.8.1
lalrpop1,523 KiB12s40msDownload countv0.23.1
lelwel175 KiB7s33msDownload countv0.10.4
logos71 KiB6s22msDownload countv0.16.1
nom88 KiB3s68msDownload countv8.0.0
parol480 KiB9s184msDownload countv4.4.0
peg77 KiB2s29msDownload countv0.8.5
pest119 KiB3s62msDownload countv2.8.6
serde_json57 KiB3s18msDownload countv1.0.149
winnow67 KiB1s27msDownload countv1.0.1
yap60 KiB420ms40msDownload countv0.12.0

System: Linux 6.17.9-76061709-generic (x86_64), rustc 1.94.1 (e408947bf 2026-03-25) 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

Contributors

epage

197 commits

renovate[bot]

57 commits

zesterer

4 commits

rosetta-rs/parse-rosetta-rs

Comparing parser APIs

Python

167

282 commits

updated Sep 2, 2026

See the code

README

Rust Parsing Benchmarks

This repo tries to assess Rust parsing performance.

crateparser typeaction codeintegrationinput typeprecedenceparameterized rulesstreaming input
chumskycombinatorsin sourcelibrary&str, &[u8], customprattYesYes
combinecombinatorsin sourcelibrary&str???
grmtoolsCFGin grammarlibrary????
lalrpopLR(1)in grammarbuild script&strnoneYesNo
lelwelLL(1)in sourcebuild script&strprattNoNo
logoslexerin sourceproc macro&str, &[u8]???
nomcombinatorsin sourcelibrary&str, &[u8], customprattYesYes
parolLL(k)/LALR(1)in sourcebuild script&strclimbingNoNo
pegPEGin grammarproc macro (block)&str, &[T], customclimbingYesNo
pestPEGexternalproc macro (file)&strclimbingNoNo
winnowcombinatorsin sourcelibrary&str, &[T], customnoneYesYes
yapcombinatorsin sourcelibrary&str, &[T], customnoneYes?

Formerly, we compared:

  • pom: lack of notoriety

Results

NameOverhead (release)Build (debug)Parse (release)DownloadsVersion
null0 KiB164ms2ms--
grmtools2,612 KiB10s182msDownload countv0.14.1
chumsky161 KiB5s47msDownload countv0.12.0
combine175 KiB4s53msDownload countv3.8.1
lalrpop1,523 KiB12s40msDownload countv0.23.1
lelwel175 KiB7s33msDownload countv0.10.4
logos71 KiB6s22msDownload countv0.16.1
nom88 KiB3s68msDownload countv8.0.0
parol480 KiB9s184msDownload countv4.4.0
peg77 KiB2s29msDownload countv0.8.5
pest119 KiB3s62msDownload countv2.8.6
serde_json57 KiB3s18msDownload countv1.0.149
winnow67 KiB1s27msDownload countv1.0.1
yap60 KiB420ms40msDownload countv0.12.0

System: Linux 6.17.9-76061709-generic (x86_64), rustc 1.94.1 (e408947bf 2026-03-25) 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

Contributors

epage

197 commits

renovate[bot]

57 commits

zesterer

4 commits

Languages

Python

100.0%