simd-json
json-benchmark
Our great sponsors
simd-json | json-benchmark | |
---|---|---|
7 | 12 | |
1,008 | 167 | |
1.3% | 3.6% | |
8.7 | 4.8 | |
2 days ago | 23 days ago | |
Rust | C++ | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
simd-json
-
I'm a veteran C++ programmer, what can Rust offer me?
Have you checked simd-json? It is a rust port of simdjson from C++, trying to use simd to speedup json parsing.
- Parsing Gigabytes of JSON per Second
-
How to manually implement the fatest json deserilizer
I second that serde is likely to be more than fast enough for your needs. But if you really need to go fast then you can use https://github.com/simd-lite/simd-json
Simd-json is almost certainly slower than serde_json for this use case. See simd-lite/simd-json#198. "simd = fast" is an inaccurate simplification.
json-benchmark
-
Do You Know How Much Your Computer Can Do in a Second?
I don’t really understand what this is trying to prove:
- you don’t seem to specify the size of the input. This is the most important omission
- you are constructing an optimised representation (in this case, strict with fields in the right places) instead of a generic ‘dumb’ representation that is more like a tree of python dicts
- rust is not a ‘moderately fast language’ imo (though this is not a very important point. It’s more about how optimised the parser is, and I suspect that serde_json is written in an optimised way, but I didn’t look very hard).
I found[1], which gives serde_json to a dom 300-400MB/s on a somewhat old laptop cpu. A simpler implementation runs at 100-200, a very optimised implementation gets 400-800. But I don’t think this does that much to confirm what I said in the comment you replied to. The numbers for simd json are a bit lower than I expected (maybe due to the ‘dom’ part). I think my 50MB/a number was probably a bit off but maybe the python implementation converts json to some C object and then converts that C object to python objects. That might half your throughput (my guess is that this is what the ‘strict parse’ case for rustc_serialise is roughly doing).
-
Serde Json vs Rapidjson (Rust vs C++)
But the code OP posted deserializes JSON without knowing anything about the structure, which is known to be slow in serde-json and doesn't appear to be the focus for the library. The json and json-deserializer crates should perform much better in that scenario.
Deserializing without the structure being known in advance doesn't seem to be a focus for serde-json. Other parsers such as the json crate perform better for that use case according to serde's own benchmarks.
This result is not unexpected because serde-json's own benchmarks show that when parsing into a structure that's not known in advance, it's about as fast as rapidjson built with clang and slower than rapidjson built with GCC, which you're using here.
- Good example of high performance Rust project without unsafe code?
- I'm a veteran C++ programmer, what can Rust offer me?
-
Rust is just as fast as C/C++
Of course that doesnt mean that in practice the available libraries are as optimized. Did you try actix? It tends to be faster than rocket. Also json-rust and simd-json are usually faster than serde-json, when you don't deserialize a known structure. Here are some benchmarks: https://github.com/serde-rs/json-benchmark
-
Serde zero-copy benchmarks?
I found two projects: * https://github.com/djkoloski/rust_serialization_benchmark - doesn't use Serde zero copy * https://github.com/serde-rs/json-benchmark - has copy vs borrowed, but the results were the same for both, so something's off there
What are some alternatives?
rust_serialization_benchmark - Benchmarks for rust serialization frameworks
hjson-rust for serde - Hjson for Rust
rust_minifb - Cross platfrom window and framebuffer crate for Rust
jsoniter - jsoniter (json-iterator) is fast and flexible JSON parser available in Java and Go
cbor-java - Java implementation of RFC 7049: Concise Binary Object Representation (CBOR)
glam-rs - A simple and fast linear algebra library for games and graphics
Cap'n Proto - Cap'n Proto serialization/RPC system - core tools and C++ library
pronto - Protobuf ORM
hyperjson - 🐍 A hyper-fast Python module for reading/writing JSON data using Rust's serde-json.
json - Strongly typed JSON library for Rust
eventually-rs - Event Sourcing for Rust
MessagePack - MessagePack serializer implementation for Java / msgpack.org[Java]