I can still see a lot of inefficiencies in ext/parser/parser.rl, but it mostly has to do with how the state machine is implemented, so it might require almost full rewrite.
In the meantime the parser performance progressed enough since 2.7.2 that I'm satisfied enough to not delay the 2.8.0 further, aside from some extra testing. If a brand new parser has to be implemented, that will be for 3.0.
I can still see a lot of inefficiencies in
ext/parser/parser.rl
, but it mostly has to do with how the state machine is implemented, so it might require almost full rewrite.In the meantime the parser performance progressed enough since
2.7.2
that I'm satisfied enough to not delay the 2.8.0 further, aside from some extra testing. If a brand new parser has to be implemented, that will be for 3.0.json
is now faster thanoj
on all three macro-benchmarks, and on par withOj::Parser
. It also performs very well on micro-benchmarks. Full parser benchmark results: https://gist.github.com/casperisfine/cf4b3a0594fae24b7d0eb93daaf3841a