Comments (2)
Yeah, avro and noproto seem sort of analagous to protobuf and capnproto, so I thought the comparison was appropriate. Very interesting to see these results - I'm in agreement that there's nothing fundamental to avro that makes it as slow as it is, really most of avro could be zero-copy even, similar to how protobuf is.
Great to see beating out flexbuffers. Pretty cool project, I really look forward to watching it.
I also wonder if that size comparison is maybe including the schema with avro? Avro by default will attach the schema to the data, but that's not fundamental - you can remove it.
from noproto.
Hey thanks for the issue, that's a good idea.
I didn't realize how much NoProto has in common with Apache Avro! I got the benchmarks together, results below:
Library | Encode | Decode All | Decode 1 | Update 1 | Size (bytes) | Size (Zlib) |
---|---|---|---|---|---|---|
Runtime Libs | ||||||
NoProto | 1057 | 1437 | 47619 | 12195 | 208 | 166 |
Apache Avro | 138 | 51 | 52 | 37 | 702 | 336 |
FlexBuffers | 401 | 855 | 23256 | 264 | 490 | 309 |
JSON | 550 | 438 | 544 | 396 | 439 | 184 |
BSON | 115 | 103 | 109 | 80 | 414 | 216 |
MessagePack | 135 | 222 | 237 | 119 | 296 | 187 |
Compiled Libs | ||||||
Flatbuffers | 1046 | 14706 | 250000 | 1065 | 264 | 181 |
Bincode | 5882 | 8772 | 9524 | 4016 | 163 | 129 |
Protobuf | 859 | 1140 | 1163 | 480 | 154 | 141 |
Prost | 1225 | 1866 | 1984 | 962 | 154 | 142 |
The most popular Apache Avro library ,avro-rs
is disappointing from a performance perspective. There's no reason it can't be as fast as NoProto (I studied the Avro docs). I feel like the only thing making NoProto so much faster in this case is the better Rust implementation.
I feel super proud that NoProto is beating out Flexbuffers, I didn't expect that result. I'll have these benchmarks in the next release!
from noproto.
Related Issues (14)
- Consider making a no_std feature option HOT 2
- Switch to 32 bit addresses HOT 1
- How to model a tagged union? HOT 1
- Can't wrap NP_Buffer in struct HOT 2
- Javascript/wasm usage example HOT 1
- Inaccurate claims in readme about competing formats HOT 3
- Handling incorrect bytes rpc spec HOT 1
- version 0.10 HOT 4
- no_proto does not work HOT 2
- Add comparison with Veriform HOT 1
- Send and NP_Factory HOT 1
- Please include bincode in benchmarks and comparisons HOT 4
- Please use the FlatBufferBuilder reset method HOT 1
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 noproto.