Comments (2)
There are several things wrong with your benchmark.
The first and most important is that you're not comparing equivalent operations: you should be comparing JSON.parse
with type.toBuffer
or type.encode
. avro.parse
generates a type
from a schema, it's a pre-processing step which should only be done once per schema.
The other major problem is that micro-benchmarks are tricky to get right. v8 has many optimizations which can render your benchmark meaningless. If we tweak your code to remove any obvious pitfalls (see below), we get:
JSON: 2239ms
Avro: 2200ms
var avro = require('avsc');
var schema = {
name: 'Pet',
type: 'record',
fields: [
{name: 'kind', type: {name: 'Kind', type: 'enum', symbols: ['CAT', 'DOG']}},
{name: 'age', type: 'int'} // To simplify preventing getting hoisted out of the loop.
]
};
var type = avro.parse(schema); // Done once upfront.
var start = Date.now();
for (var i = 0; i < 5000000; i++) {
if (JSON.stringify({age: i, kind: 'CAT'}).length < 2) {
throw new Error();
}
}
var stop = Date.now();
console.log("\t JSON: " + (stop - start) + "ms");
start = Date.now();
for (var i = 0; i < 5000000; i++) {
if (type.toBuffer({age: i, kind: 'CAT'}).length < 2) {
throw new Error();
}
}
stop = Date.now();
console.log("\t Avro: " + (stop - start) + "ms");
from avsc.
Awww. I'm an idiot. Well, I'll be using Avro from now on then :) Thanks for the explanation haha.
Cannot wait to get this puppy across our binary websockets, she will fly.
from avsc.
Related Issues (20)
- How to convert decoded avro data into JSON? HOT 1
- IDL not exporting types for array of union HOT 3
- Support ?-syntax for optional fields in avdl HOT 2
- can schema support dynamic keys? HOT 1
- Extending a schema causes a "truncated buffer" error when using fromBuffer HOT 5
- Invalid Avro header does not raise error event HOT 1
- "new SlowBuffer" is deprecated since Node v.6 --> cannot use it with VITE5 and VUE3 HOT 3
- Doesn't handle trailing 0s from buffer. HOT 1
- Unwrapping unions when deserialising HOT 4
- Unable to consume messages produced by Java application with AVRO schema HOT 9
- Using type.isValid() with a union of records HOT 3
- long encoding/decoding is not reversible for some large but safe js ints HOT 1
- Convert String Representations into Logical Type HOT 1
- Which version of the Avro specification does the latest version of avsc (5.7.7) implement? HOT 1
- Not being able to use records that use the "bytes" type field HOT 2
- Using seprately declared enum in union in record. HOT 1
- Avro.types.LogicalType's _copy implementation HOT 1
- "Error: trailing data" when using custom Long type in Avro with KafkaJS Confluent Schema Registry HOT 1
- Missing default value in avro scheam HOT 2
- Handling logical types 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 avsc.