mockOne := [ |map|
map := Dictionary new.
32 timesRepeat: [
map
at: 1000 atRandom asWords asSymbol
put: {
2 atRandom = 1.
1e9 atRandom.
1e9 atRandom negated.
1000 atRandom asWords.
1e6 atRandom seconds humanReadablePrintString.
nil.
DateAndTime now printString.
(-1000 to: 1000) atRandom * Float pi } atRandom ].
map ].
mocks := (1 to: 1000) collect:[:i| mockOne value].
randomGenerator := SecureRandom new.
getOne := [ mocks atRandom: randomGenerator ].
one := getOne value.
fuelSerializer := FLSerializer newDefault.
dataStream := [:oject| MCDataStream streamedRepresentationOf: object].
ABBench bench: [
ABBench
a: [ one := getOne value.
serialized := BSON write: one. ]
b: [
one := getOne value.
aStream := WriteStream on: (ByteArray new: 100).
fuelSerializer serialize: one on: aStream.
aStream contents
].
].
"B is 65.26% SLOWER than A"
ABBench bench: [
ABBench
a: [ one := getOne value.
serialized := BSON write: one. ]
b: [
one := getOne value.
STON toString: one.
].
].
"B is 33.07% FASTER than A"
ABBench bench: [
ABBench
a: [ one := getOne value.
serialized := BSON write: one. ]
b: [
one := getOne value.
NeoJSONWriter toString: one.
].
].
"B is 89.40% FASTER than A"
ABBench bench: [
ABBench
a: [ one := getOne value.
dataStream value: one ]
b: [
one := getOne value.
STON toString: one.
].
].
"B is 88.26% SLOWER than A"
ABBench bench: [
ABBench
a: [ one := getOne value.
NeoJSONWriter toString: one. ]
b: [
one := getOne value.
dataStream value: one.
].
].
"B is 476.56% FASTER than A"
ABBench bench: [
ABBench
a: [ one := getOne value.
serialized := BSON write: one. ]
b: [
one := getOne value.
dataStream value: one.
].
].
"B is 979.82% FASTER than A"
ABBench bench: [
ABBench
a: [
one := getOne value.
aStream := WriteStream on: (ByteArray new: 100).
fuelSerializer serialize: one on: aStream. ]
b: [
one := getOne value.
dataStream value: one.
].
].
"B is 3313.03% FASTER than A"
Created
November 28, 2022 16:47
-
-
Save sebastianconcept/6736e94bfa1d9c40b2cf3ea1a98b7d8e to your computer and use it in GitHub Desktop.
Serialize benchmarks BSON vs STON vs NeoJSON vs Fuel vs MCDataStream
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
🤦🏻♂️ Oh boy... that was nasty! 😂
Great catch @svenvc
so... NeoJSONWriter will be the preferred one then! And by a lot!
And correcting previous tests: