Comments (5)
I tried this change on a related parser combinator library where the bench is parsing a very large json file
- Iterator: 9.5 ms
- Equality: 11.6 ms
from nom.
I tried this change on a related parser combinator library where the bench is parsing a very large json file
Iterator: 9.5 ms
Equality: 11.6 ms
Would you mind sharing the project and JSON file? I'd love to poke around at the binaries to see what's going on
from nom.
Would you mind sharing the project and JSON file? I'd love to poke around at the binaries to see what's going on
- https://github.com/winnow-rs/winnow
- https://github.com/winnow-rs/winnow/tree/main/third_party/nativejson-benchmark/data
I ran cargo bench --bench json -- basic/canada
from nom.
Something I suspect is what your code gets inlined into has as much affect as your actual code on performance.
A possible alternative experiment is to not inline the compare call. Those are a mix of inherited from nom or added later. In a lot of cases, they dramatically helped with performance but I've also found cases where they hurt.
from nom.
This is interesting, and it's always a good idea to revisit old optimisations to see if they still hold up. I'll look a bit into it. I suspect here that if the simpler version is slower, it is due to the overhead of calling into bcmp. Compare
in nom is mainly used for very short strings, so for those a small loop might be faster
from nom.
Related Issues (20)
- What is the right way to parse chunk based file formats?
- [Feature Request] Pratt Parsing combinators HOT 2
- separated_list1 by multipspace0 sep failed HOT 3
- Allow tag/is_not/similar to take u8 in addition to arrays and slices
- docs: Dead link in README
- alt short circuits with Incomplete return HOT 3
- unsigned integer underflow HOT 3
- using `.clone()` on a double reference HOT 1
- Nom's error is referencing data owned by the calling function
- Any other approach to handle left recursion
- How to parse until a range of tags HOT 3
- Mention difference between is_not and take_until in their respective docs.
- I was going to complain about an issue in the function take_while_m_n, but [update : and I will do] ...
- Add u48 number parser HOT 1
- I want to implement `separated_tuple` for 8.0 HOT 7
- `tag_no_case` panicks while matching certain unicode capitalized characters.
- Ergonomics of `alt()` taking tuple versus slice HOT 3
- A new release for 8.0?
- FromStr-esque parsing trait HOT 1
- Float parsing with trailing `e` broken
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nom.