https://github.com/WillAbides/rjson
The generated code isn't much to look at, but it is certainly fast.
https://github.com/WillAbides/rjson/blob/main/object_handler...
https://github.com/WillAbides/rjson
The generated code isn't much to look at, but it is certainly fast.
https://github.com/WillAbides/rjson/blob/main/object_handler...
Have you compared your parser to simdjson-go? I haven't looked specifically at the go rewrite, but I hear it's decent.
I was very excited to do branch free coding to parse JSON, but really only handled the 'lexing' portion of the task in branch free fashion. Certainly more of the task could be done branch free, especially if you are working on SIMD or GPGPU.
As for simdjson-go, I did benchmark it. rjson outperformed simdjson-go in most benchmarks, but simdjson-go was about 3% faster reading citm_catalog.json.
https://github.com/WillAbides/rjson#simdjson
Edit:
I see on your bio that you are one of the simdjson authors. I hope you will indulge a question about it. I am generally more interested parsing a large volume of json documents efficiently than I am in doing it quickly. Since simdjson uses parallel instructions, would that mean that the speedup comes at the expense of being able to process more documents in parallel on the same hardware?
The use of parallelism in simdjson is the use of SIMD instructions, not multiple cores. So the answer is "no" to the second question.
https://old.reddit.com/r/golang/comments/mlhvx0/i_wrote_yet_...