cocos-engine icon indicating copy to clipboard operation
cocos-engine copied to clipboard

Performance test for Javascript binary serialization libraries

Open dumganhar opened this issue 1 year ago • 3 comments

Test Code:

https://github.com/dumganhar/sia/tree/cocos-test

Test Files: TestFiles.zip

dumganhar avatar Sep 21 '22 01:09 dumganhar

Tested on MacBook Pro (16-inch, 2019) 2.6GHz 6-Core Intel Core i7

NodeJS v16.15.0

james@JamesMPB sia % npm run benchmark

> [email protected] benchmark
> node benchmark/benchmark.js

Downloading the test data
Running tests on "Tiny file"
Running benchmarks for JSON, 10000 loops
Running benchmarks for Sia, 10000 loops
Running benchmarks for Sia Lab, 10000 loops
Running benchmarks for MessagePack, 10000 loops

┌─────────────┬─────────────────────────┬─────────────────────────┬─────────────────────────┬───────┬───────┬────────────┐
│ Name        │ Serialize               │ Deserialize             │ Total                   │ Ratio │ Size  │ Size ratio │
├─────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼───────┼───────┼────────────┤
│ JSON        │ 0.001953989267349243ms  │ 0.0025860071182250977ms │ 0.004539996385574341ms  │ 1     │ 401 B │ 1          │
├─────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼───────┼───────┼────────────┤
│ Sia         │ 0.002504006028175354ms  │ 0.0028959959745407104ms │ 0.0054000020027160645ms │ 1.19  │ 366 B │ 0.91       │
├─────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼───────┼───────┼────────────┤
│ Sia Lab     │ 0.0022699981927871704ms │ 0.0031550079584121704ms │ 0.005425006151199341ms  │ 1.19  │ 366 B │ 0.91       │
├─────────────┼─────────────────────────┼─────────────────────────┼─────────────────────────┼───────┼───────┼────────────┤
│ MessagePack │ 0.0016880035400390625ms │ 0.0026360005140304565ms │ 0.004324004054069519ms  │ 0.95  │ 342 B │ 0.85       │
└─────────────┴─────────────────────────┴─────────────────────────┴─────────────────────────┴───────┴───────┴────────────┘

Running tests on "Small file"
Running benchmarks for JSON, 1000 loops
Running benchmarks for Sia, 1000 loops
Running benchmarks for Sia Lab, 1000 loops
Running benchmarks for MessagePack, 1000 loops

┌─────────────┬───────────────────────┬───────────────────────┬──────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize           │ Total                │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.3767470121383667ms  │ 0.4193029999732971ms  │ 0.7960500121116638ms │ 1     │ 140 kB │ 1          │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 0.2949270009994507ms  │ 0.34151700139045715ms │ 0.6364440023899078ms │ 0.8   │ 123 kB │ 0.88       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 0.3345009982585907ms  │ 0.3853140026330948ms  │ 0.7198150008916855ms │ 0.9   │ 123 kB │ 0.88       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 0.37067200243473053ms │ 0.33995600044727325ms │ 0.7106280028820038ms │ 0.89  │ 130 kB │ 0.93       │
└─────────────┴───────────────────────┴───────────────────────┴──────────────────────┴───────┴────────┴────────────┘

Running tests on "Large file"
Running benchmarks for JSON, 100 loops
Running benchmarks for Sia, 100 loops
Running benchmarks for Sia Lab, 100 loops
Running benchmarks for MessagePack, 100 loops

┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 2ms       │ 3ms         │ 5ms   │ 1     │ 891 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 3ms       │ 3ms         │ 6ms   │ 1.2   │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 4ms       │ 4ms         │ 8ms   │ 1.6   │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 4ms       │ 3ms         │ 7ms   │ 1.4   │ 813 kB │ 0.91       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘

Running tests on "Monster file"
Running benchmarks for JSON, 20 loops
Running benchmarks for Sia, 20 loops
Running benchmarks for Sia Lab, 20 loops
Running benchmarks for MessagePack, 20 loops

┌─────────────┬───────────┬─────────────┬───────┬───────┬─────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size    │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ JSON        │ 93ms      │ 128ms       │ 221ms │ 1     │ 26.1 MB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ Sia         │ 80ms      │ 118ms       │ 198ms │ 0.9   │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ Sia Lab     │ 75ms      │ 127ms       │ 202ms │ 0.91  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ MessagePack │ 101ms     │ 138ms       │ 239ms │ 1.08  │ 23.9 MB │ 0.92       │
└─────────────┴───────────┴─────────────┴───────┴───────┴─────────┴────────────┘

Running tests on "Cocos Effect"
Running benchmarks for JSON, 1000 loops
Running benchmarks for Sia, 1000 loops
Running benchmarks for Sia Lab, 1000 loops
Running benchmarks for MessagePack, 1000 loops

┌─────────────┬───────────────────────┬───────────────────────┬───────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize           │ Total                 │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.34522999823093414ms │ 0.3094339966773987ms  │ 0.6546639949083328ms  │ 1     │ 122 kB │ 1          │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 0.101624995470047ms   │ 0.10134099423885345ms │ 0.20296598970890045ms │ 0.31  │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 0.08701500296592712ms │ 0.10917000472545624ms │ 0.19618500769138336ms │ 0.3   │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 0.12694600224494934ms │ 0.15313799679279327ms │ 0.2800839990377426ms  │ 0.43  │ 115 kB │ 0.95       │
└─────────────┴───────────────────────┴───────────────────────┴───────────────────────┴───────┴────────┴────────────┘

Chome 105.0.5195.125

Downloading the test data
main.js:8933 Running tests on "Tiny file"
main.js:8826 Running benchmarks for JSON, 10000 loops
main.js:8826 Running benchmarks for Sia, 10000 loops
main.js:8826 Running benchmarks for Sia Lab, 10000 loops
main.js:8826 Running benchmarks for MessagePack, 10000 loops
main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬───────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size  │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼───────┼────────────┤
│ JSON        │ 0ms       │ 0ms         │ 0ms   │ NaN   │ 401 B │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼───────┼────────────┤
│ Sia         │ 0ms       │ 0ms         │ 0ms   │ NaN   │ 366 B │ 0.91       │
├─────────────┼───────────┼─────────────┼───────┼───────┼───────┼────────────┤
│ Sia Lab     │ 0ms       │ 0ms         │ 0ms   │ NaN   │ 366 B │ 0.91       │
├─────────────┼───────────┼─────────────┼───────┼───────┼───────┼────────────┤
│ MessagePack │ 0ms       │ 0ms         │ 0ms   │ NaN   │ 342 B │ 0.85       │
└─────────────┴───────────┴─────────────┴───────┴───────┴───────┴────────────┘
main.js:8933 Running tests on "Small file"
main.js:8826 Running benchmarks for JSON, 1000 loops
main.js:8826 Running benchmarks for Sia, 1000 loops
main.js:8826 Running benchmarks for Sia Lab, 1000 loops
main.js:8826 Running benchmarks for MessagePack, 1000 loops
main.js:8891 
┌─────────────┬───────────────────────┬───────────────────────┬──────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize           │ Total                │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.19999999925494194ms │ 0.29999999701976776ms │ 0.4999999962747097ms │ 1     │ 140 kB │ 1          │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 1ms                   │ 1ms                   │ 2ms                  │ 4     │ 123 kB │ 0.88       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 1ms                   │ 1ms                   │ 2ms                  │ 4     │ 123 kB │ 0.88       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 1ms                   │ 1ms                   │ 2ms                  │ 4     │ 130 kB │ 0.93       │
└─────────────┴───────────────────────┴───────────────────────┴──────────────────────┴───────┴────────┴────────────┘
main.js:8933 Running tests on "Large file"
main.js:8826 Running benchmarks for JSON, 100 loops
main.js:8826 Running benchmarks for Sia, 100 loops
main.js:8826 Running benchmarks for Sia Lab, 100 loops
main.js:8826 Running benchmarks for MessagePack, 100 loops
main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 2ms       │ 2ms         │ 4ms   │ 1     │ 891 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 3ms       │ 3ms         │ 6ms   │ 1.5   │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 5ms       │ 7ms         │ 12ms  │ 3     │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 6ms       │ 8ms         │ 14ms  │ 3.5   │ 813 kB │ 0.91       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘
main.js:8933 Running tests on "Monster file"
main.js:8826 Running benchmarks for JSON, 20 loops
main.js:8826 Running benchmarks for Sia, 20 loops
main.js:8826 Running benchmarks for Sia Lab, 20 loops
main.js:8826 Running benchmarks for MessagePack, 20 loops
main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬─────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size    │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ JSON        │ 90ms      │ 128ms       │ 218ms │ 1     │ 26.1 MB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ Sia         │ 138ms     │ 196ms       │ 334ms │ 1.53  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ Sia Lab     │ 125ms     │ 269ms       │ 394ms │ 1.81  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ MessagePack │ 190ms     │ 291ms       │ 481ms │ 2.21  │ 23.9 MB │ 0.92       │
└─────────────┴───────────┴─────────────┴───────┴───────┴─────────┴────────────┘
main.js:8933 Running tests on "Cocos Effect"
main.js:8826 Running benchmarks for JSON, 1000 loops
main.js:8826 Running benchmarks for Sia, 1000 loops
main.js:8826 Running benchmarks for Sia Lab, 1000 loops
main.js:8826 Running benchmarks for MessagePack, 1000 loops
main.js:8891 
┌─────────────┬───────────────────────┬───────────────────────┬───────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize           │ Total                 │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.19999999925494194ms │ 0.19999999925494194ms │ 0.3999999985098839ms  │ 1     │ 122 kB │ 1          │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 1ms                   │ 1ms                   │ 2ms                   │ 5     │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 1ms                   │ 1ms                   │ 2ms                   │ 5     │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼───────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 0.09999999776482582ms │ 0.10000000149011612ms │ 0.19999999925494194ms │ 0.5   │ 115 kB │ 0.95       │
└─────────────┴───────────────────────┴───────────────────────┴───────────────────────┴───────┴────────┴────────────┘

Cocos Creator 3.6.1 macOS (JIT enabled)

Running tests on "Tiny file"
dist/main.js:8826 Running benchmarks for JSON, 10000 loops
dist/main.js:8826 Running benchmarks for Sia, 10000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 10000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 10000 loops
dist/main.js:8891 
┌─────────────┬─────────────────────────┬─────────────────────────┬────────────────────────┬───────┬───────┬────────────┐
│ Name        │ Serialize               │ Deserialize             │ Total                  │ Ratio │ Size  │ Size ratio │
├─────────────┼─────────────────────────┼─────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ JSON        │ 0.001999999999497959ms  │ 0.001999999999497959ms  │ 0.003999999998995918ms │ 1     │ 401 B │ 1          │
├─────────────┼─────────────────────────┼─────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia         │ 0.001999999999497959ms  │ 0.0029999999997016857ms │ 0.004999999999199645ms │ 1.25  │ 366 B │ 0.91       │
├─────────────┼─────────────────────────┼─────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia Lab     │ 0.001999999999497959ms  │ 0.0029999999997016857ms │ 0.004999999999199645ms │ 1.25  │ 366 B │ 0.91       │
├─────────────┼─────────────────────────┼─────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ MessagePack │ 0.0009999999992942321ms │ 0.0029999999997016857ms │ 0.003999999998995918ms │ 1     │ 342 B │ 0.85       │
└─────────────┴─────────────────────────┴─────────────────────────┴────────────────────────┴───────┴───────┴────────────┘
dist/main.js:8933 Running tests on "Small file"
dist/main.js:8826 Running benchmarks for JSON, 1000 loops
dist/main.js:8826 Running benchmarks for Sia, 1000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 1000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 1000 loops
dist/main.js:8891 
┌─────────────┬──────────────────────┬───────────────────────┬──────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize            │ Deserialize           │ Total                │ Ratio │ Size   │ Size ratio │
├─────────────┼──────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.3959999999997308ms │ 0.40200000000004366ms │ 0.7979999999997744ms │ 1     │ 140 kB │ 1          │
├─────────────┼──────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 1ms                  │ 1ms                   │ 2ms                  │ 2.51  │ 123 kB │ 0.88       │
├─────────────┼──────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 1ms                  │ 1ms                   │ 2ms                  │ 2.51  │ 123 kB │ 0.88       │
├─────────────┼──────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 1ms                  │ 1ms                   │ 2ms                  │ 2.51  │ 130 kB │ 0.93       │
└─────────────┴──────────────────────┴───────────────────────┴──────────────────────┴───────┴────────┴────────────┘
dist/main.js:8933 Running tests on "Large file"
dist/main.js:8826 Running benchmarks for JSON, 100 loops
dist/main.js:8826 Running benchmarks for Sia, 100 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 100 loops
dist/main.js:8826 Running benchmarks for MessagePack, 100 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 2ms       │ 3ms         │ 5ms   │ 1     │ 891 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 3ms       │ 3ms         │ 6ms   │ 1.2   │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 4ms       │ 7ms         │ 11ms  │ 2.2   │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 4ms       │ 8ms         │ 12ms  │ 2.4   │ 813 kB │ 0.91       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘
dist/main.js:8933 Running tests on "Monster file"
dist/main.js:8826 Running benchmarks for JSON, 20 loops
dist/main.js:8826 Running benchmarks for Sia, 20 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 20 loops
dist/main.js:8826 Running benchmarks for MessagePack, 20 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬─────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size    │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ JSON        │ 98ms      │ 134ms       │ 232ms │ 1     │ 26.1 MB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ Sia         │ 124ms     │ 183ms       │ 307ms │ 1.32  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ Sia Lab     │ 120ms     │ 253ms       │ 373ms │ 1.61  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼───────┼───────┼─────────┼────────────┤
│ MessagePack │ 156ms     │ 284ms       │ 440ms │ 1.9   │ 23.9 MB │ 0.92       │
└─────────────┴───────────┴─────────────┴───────┴───────┴─────────┴────────────┘
dist/main.js:8933 Running tests on "Cocos Effect"
dist/main.js:8826 Running benchmarks for JSON, 1000 loops
dist/main.js:8826 Running benchmarks for Sia, 1000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 1000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 1000 loops
dist/main.js:8891 
┌─────────────┬───────────────────────┬───────────────────────┬──────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize           │ Total                │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.3819999999977881ms  │ 0.3019999999960419ms  │ 0.68399999999383ms   │ 1     │ 122 kB │ 1          │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 1ms                   │ 1ms                   │ 2ms                  │ 2.92  │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 1ms                   │ 1ms                   │ 2ms                  │ 2.92  │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 0.45499999999447027ms │ 0.23799999999755528ms │ 0.6929999999920256ms │ 1.01  │ 115 kB │ 0.95       │
└─────────────┴───────────────────────┴───────────────────────┴──────────────────────┴───────┴────────┴────────────┘

Cocos Creator 3.6.1 macOS (JIT disabled)

Running tests on "Tiny file"
dist/main.js:8826 Running benchmarks for JSON, 10000 loops
dist/main.js:8826 Running benchmarks for Sia, 10000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 10000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 10000 loops
dist/main.js:8891 
┌─────────────┬────────────────────────┬────────────────────────┬────────────────────────┬───────┬───────┬────────────┐
│ Name        │ Serialize              │ Deserialize            │ Total                  │ Ratio │ Size  │ Size ratio │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ JSON        │ 0.001999999999497959ms │ 0.001999999999497959ms │ 0.003999999998995918ms │ 1     │ 401 B │ 1          │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia         │ 0.04199999999946158ms  │ 0.03099999999994907ms  │ 0.07299999999941065ms  │ 18.25 │ 366 B │ 0.91       │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia Lab     │ 0.03799999999955617ms  │ 0.03499999999985448ms  │ 0.07299999999941065ms  │ 18.25 │ 366 B │ 0.91       │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ MessagePack │ 0.027999999999337888ms │ 0.027000000000043656ms │ 0.054999999999381544ms │ 13.75 │ 342 B │ 0.85       │
└─────────────┴────────────────────────┴────────────────────────┴────────────────────────┴───────┴───────┴────────────┘
dist/main.js:8933 Running tests on "Small file"
dist/main.js:8826 Running benchmarks for JSON, 1000 loops
dist/main.js:8826 Running benchmarks for Sia, 1000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 1000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 1000 loops
dist/main.js:8891 
┌─────────────┬───────────────────────┬──────────────────────┬─────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize          │ Total               │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼──────────────────────┼─────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.40899999999965075ms │ 0.4069999999992433ms │ 0.815999999998894ms │ 1     │ 140 kB │ 1          │
├─────────────┼───────────────────────┼──────────────────────┼─────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 16ms                  │ 11ms                 │ 27ms                │ 33.09 │ 123 kB │ 0.88       │
├─────────────┼───────────────────────┼──────────────────────┼─────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 16ms                  │ 12ms                 │ 28ms                │ 34.31 │ 123 kB │ 0.88       │
├─────────────┼───────────────────────┼──────────────────────┼─────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 8ms                   │ 5ms                  │ 13ms                │ 15.93 │ 130 kB │ 0.93       │
└─────────────┴───────────────────────┴──────────────────────┴─────────────────────┴───────┴────────┴────────────┘
dist/main.js:8933 Running tests on "Large file"
dist/main.js:8826 Running benchmarks for JSON, 100 loops
dist/main.js:8826 Running benchmarks for Sia, 100 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 100 loops
dist/main.js:8826 Running benchmarks for MessagePack, 100 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 2ms       │ 3ms         │ 5ms   │ 1     │ 891 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 60ms      │ 45ms        │ 105ms │ 21    │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 55ms      │ 78ms        │ 133ms │ 26.6  │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 57ms      │ 66ms        │ 123ms │ 24.6  │ 813 kB │ 0.91       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘
dist/main.js:8933 Running tests on "Monster file"
dist/main.js:8826 Running benchmarks for JSON, 20 loops
dist/main.js:8826 Running benchmarks for Sia, 20 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 20 loops
dist/main.js:8826 Running benchmarks for MessagePack, 20 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬────────┬───────┬─────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total  │ Ratio │ Size    │ Size ratio │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ JSON        │ 101ms     │ 128ms       │ 229ms  │ 1     │ 26.1 MB │ 1          │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ Sia         │ 2297ms    │ 1660ms      │ 3957ms │ 17.28 │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ Sia Lab     │ 2201ms    │ 2204ms      │ 4405ms │ 19.24 │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ MessagePack │ 1735ms    │ 1573ms      │ 3308ms │ 14.45 │ 23.9 MB │ 0.92       │
└─────────────┴───────────┴─────────────┴────────┴───────┴─────────┴────────────┘
dist/main.js:8933 Running tests on "Cocos Effect"
dist/main.js:8826 Running benchmarks for JSON, 1000 loops
dist/main.js:8826 Running benchmarks for Sia, 1000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 1000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 1000 loops
dist/main.js:8891 
┌─────────────┬───────────────────────┬───────────────────────┬──────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize             │ Deserialize           │ Total                │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.34799999999813735ms │ 0.29399999999441206ms │ 0.6419999999925494ms │ 1     │ 122 kB │ 1          │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 16ms                  │ 10ms                  │ 26ms                 │ 40.5  │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 15ms                  │ 11ms                  │ 26ms                 │ 40.5  │ 110 kB │ 0.91       │
├─────────────┼───────────────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 7ms                   │ 1ms                   │ 8ms                  │ 12.46 │ 115 kB │ 0.95       │
└─────────────┴───────────────────────┴───────────────────────┴──────────────────────┴───────┴────────┴────────────┘

dumganhar avatar Sep 21 '22 01:09 dumganhar

Redmi 5 Plus (Cocos Creator 3.6.1)

Running tests on "Tiny file"
dist/main.js:8826 Running benchmarks for JSON, 10000 loops
dist/main.js:8826 Running benchmarks for Sia, 10000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 10000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 10000 loops
dist/main.js:8891 
┌─────────────┬────────────────────────┬────────────────────────┬────────────────────────┬───────┬───────┬────────────┐
│ Name        │ Serialize              │ Deserialize            │ Total                  │ Ratio │ Size  │ Size ratio │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ JSON        │ 0.013999999999214197ms │ 0.01599999999962165ms  │ 0.029999999998835847ms │ 1     │ 401 B │ 1          │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia         │ 0.02299999999922875ms  │ 0.024999999999636202ms │ 0.04799999999886495ms  │ 1.6   │ 366 B │ 0.91       │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia Lab     │ 0.02099999999973079ms  │ 0.024999999999636202ms │ 0.04599999999936699ms  │ 1.53  │ 366 B │ 0.91       │
├─────────────┼────────────────────────┼────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ MessagePack │ 0.014999999999417923ms │ 0.02899999999863212ms  │ 0.04399999999805004ms  │ 1.47  │ 342 B │ 0.85       │
└─────────────┴────────────────────────┴────────────────────────┴────────────────────────┴───────┴───────┴────────────┘
dist/main.js:8933 Running tests on "Small file"
dist/main.js:8826 Running benchmarks for JSON, 1000 loops
dist/main.js:8826 Running benchmarks for Sia, 1000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 1000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 1000 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 2ms       │ 2ms         │ 4ms   │ 1     │ 140 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 6ms       │ 6ms         │ 12ms  │ 3     │ 123 kB │ 0.88       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 6ms       │ 7ms         │ 13ms  │ 3.25  │ 123 kB │ 0.88       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 5ms       │ 7ms         │ 12ms  │ 3     │ 130 kB │ 0.93       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘
dist/main.js:8933 Running tests on "Large file"
dist/main.js:8826 Running benchmarks for JSON, 100 loops
dist/main.js:8826 Running benchmarks for Sia, 100 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 100 loops
dist/main.js:8826 Running benchmarks for MessagePack, 100 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 14ms      │ 17ms        │ 31ms  │ 1     │ 891 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 25ms      │ 24ms        │ 49ms  │ 1.58  │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 31ms      │ 43ms        │ 74ms  │ 2.39  │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 35ms      │ 57ms        │ 92ms  │ 2.97  │ 813 kB │ 0.91       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘
dist/main.js:8933 Running tests on "Monster file"
dist/main.js:8826 Running benchmarks for JSON, 20 loops
dist/main.js:8826 Running benchmarks for Sia, 20 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 20 loops
dist/main.js:8826 Running benchmarks for MessagePack, 20 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬────────┬───────┬─────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total  │ Ratio │ Size    │ Size ratio │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ JSON        │ 478ms     │ 627ms       │ 1105ms │ 1     │ 26.1 MB │ 1          │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ Sia         │ 837ms     │ 1163ms      │ 2000ms │ 1.81  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ Sia Lab     │ 808ms     │ 1411ms      │ 2219ms │ 2.01  │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ MessagePack │ 1075ms    │ 1776ms      │ 2851ms │ 2.58  │ 23.9 MB │ 0.92       │
└─────────────┴───────────┴─────────────┴────────┴───────┴─────────┴────────────┘
dist/main.js:8933 Running tests on "Cocos Effect"
dist/main.js:8826 Running benchmarks for JSON, 1000 loops
dist/main.js:8826 Running benchmarks for Sia, 1000 loops
dist/main.js:8826 Running benchmarks for Sia Lab, 1000 loops
dist/main.js:8826 Running benchmarks for MessagePack, 1000 loops
dist/main.js:8891 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 2ms       │ 2ms         │ 4ms   │ 1     │ 122 kB │ 1          │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia         │ 5ms       │ 6ms         │ 11ms  │ 2.75  │ 110 kB │ 0.91       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 5ms       │ 6ms         │ 11ms  │ 2.75  │ 110 kB │ 0.91       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 4ms       │ 2ms         │ 6ms   │ 1.5   │ 115 kB │ 0.95       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘

dumganhar avatar Sep 21 '22 03:09 dumganhar

iPhoneX (Cocos Creator 3.6.1)

12:46:59 [DEBUG]: D/ JS: Downloading the test data
12:46:59 [DEBUG]: D/ JS: Running tests on "Tiny file"
12:46:59 [DEBUG]: D/ JS: Running benchmarks for JSON, 10000 loops
12:47:00 [DEBUG]: D/ JS: Running benchmarks for Sia, 10000 loops
12:47:00 [DEBUG]: D/ JS: Running benchmarks for Sia Lab, 10000 loops
12:47:01 [DEBUG]: D/ JS: Running benchmarks for MessagePack, 10000 loops
12:47:02 [DEBUG]: D/ JS: 
┌─────────────┬────────────────────────┬─────────────────────────┬────────────────────────┬───────┬───────┬────────────┐
│ Name        │ Serialize              │ Deserialize             │ Total                  │ Ratio │ Size  │ Size ratio │
├─────────────┼────────────────────────┼─────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ JSON        │ 0.001999999999497959ms │ 0.0029999999997016857ms │ 0.004999999999199645ms │ 1     │ 401 B │ 1          │
├─────────────┼────────────────────────┼─────────────────────────┼────────────────────────┼───────┼───────┼────────────┤
│ Sia         │ 0.04899999999997817ms  │ 0.033999999999650754ms  │ 0.08299999999962893ms  │ 16.6  │ 366 B │ 0.91       │
├────────┼───────┼───────┼────────────┤
│ Sia Lab     │ 0.04399999999986903ms  │ 0.03899999999975989ms   │ 0.08299999999962893ms  │ 16.6  │ 366 B │ 0.91       │
├────────────┼───────┼───────┼────────────┤
│ MessagePack │ 0.0319999999992433ms   │ 0.029999999998835847ms  │ 0.06199999999807915ms  │ 12.4  │ 342 B │ 0.85       │
└────────────────┼───────┼───────┼────────────┤
│ Sia         │ 0.04899999999997817ms  │ 0.033999999999650754ms  │ 0.08299999999962893ms  │ 16.6  │ 366 B │ 0.91       │
└─────────────┴────────────────────────┴─────────────────────────┴────────────────────────┴───────┴───────┴────────────┘
12:47:02 [DEBUG]: D/ JS: Running tests on "Small file"
12:47:02 [DEBUG]: D/ JS: Running benchmarks for JSON, 1000 loops
12:47:03 [DEBUG]: D/ JS: Running benchmarks for Sia, 1000 loops
12:47:37 [DEBUG]: D/ JS: Running benchmarks for Sia Lab, 1000 loops
12:48:15 [DEBUG]: D/ JS: Running benchmarks for MessagePack, 1000 loops
12:48:32 [DEBUG]: D/ JS: 
┌─────────────┬──────────────────────┬─────────────┬──────────────────────┬───────┬────────┬────────────┐
│ Name        │ Serialize            │ Deserialize │ Total                │ Ratio │ Size   │ Size ratio │
├─────────────┼──────────────────────┼─────────────┼──────────────────────┼───────┼────────┼────────────┤
│ JSON        │ 0.4139999999988504ms │ 1ms         │ 1.4139999999988504ms │ 1     │ 140 kB │ 1          │
├─────────────┼──────────────────────┼─────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia         │ 19ms                 │ 14ms        │ 33ms                 │ 23.34 │ 123 kB │ 0.88       │
├─────────────┼──────────────────────┼─────────────┼───────────────────────┼──────────────────────┼───────┼────────┼────────────┤
│ Sia Lab     │ 19ms                 │ 16ms        │ 35ms                 │ 24.75 │ 123 kB │ 0.88       │
├─────────────┼──────────────────────┼───────┼────────┼────────────┤
│ MessagePack │ 10ms                 │ 5ms         │ 15ms                 │ 10.61 │ 130 kB │ 0.93       │
└─────────────┴───────────────────────┼──────────────────────┼───────┼────────┼────────────┤

12:48:32 [DEBUG]: D/ JS: Running tests on "Large file"
12:48:32 [DEBUG]: D/ JS: Running benchmarks for JSON, 100 loops
12:48:32 [DEBUG]: D/ JS: Running benchmarks for Sia, 100 loops
12:48:46 [DEBUG]: D/ JS: Running benchmarks for Sia Lab, 100 loops
12:49:05 [DEBUG]: D/ JS: Running benchmarks for MessagePack, 100 loops
12:49:21 [DEBUG]: D/ JS: 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 3ms       │ 3ms         │ 6ms   │ 1     │ 891 kB │ 1          │
├─────────────┼──────────────┼────────┼────────────┤
│ Sia         │ 78ms      │ 56ms        │ 134ms │ 22.33 │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 71ms      │ 104ms       │ 175ms │ 29.17 │ 693 kB │ 0.78       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 74ms      │ 83ms        │ 157ms │ 26.17 │ 813 kB │ 0.91       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘
12:49:21 [DEBUG]: D/ JS: Running tests on "Monster file"
12:49:21 [DEBUG]: D/ JS: Running benchmarks for JSON, 20 loops
12:49:28 [DEBUG]: D/ JS: Running benchmarks for Sia, 20 loops
12:51:21 [DEBUG]: D/ JS: Running benchmarks for Sia Lab, 20 loops
12:53:38 [DEBUG]: D/ JS: Running benchmarks for MessagePack, 20 loops
12:55:24 [DEBUG]: D/ JS: 
┌─────────────┬───────────┬─────────────┬────────┬───────┬─────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total  │ Ratio │ Size    │ Size ratio │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ JSON        │ 100ms     │ 164ms       │ 264ms  │ 1     │ 26.1 MB │ 1          │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ Sia         │ 3054ms    │ 2291ms      │ 5345ms │ 20.25 │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ Sia Lab     │ 3200ms    │ 3435ms      │ 6635ms │ 25.13 │ 20.1 MB │ 0.77       │
├─────────────┼───────────┼─────────────┼────────┼───────┼─────────┼────────────┤
│ MessagePack │ 2638ms    │ 2412ms      │ 5050ms │ 19.13 │ 23.9 MB │ 0.92       │
└─────────────┴───────────┴─────────────┴────────┴───────┴─────────┴────────────┘
12:55:24 [DEBUG]: D/ JS: Running tests on "Cocos Effect"
12:55:24 [DEBUG]: D/ JS: Running benchmarks for JSON, 1000 loops
12:55:25 [DEBUG]: D/ JS: Running benchmarks for Sia, 1000 loops
12:56:10 [DEBUG]: D/ JS: Running benchmarks for Sia Lab, 1000 loops
12:56:56 [DEBUG]: D/ JS: Running benchmarks for MessagePack, 1000 loops
12:57:11 [DEBUG]: D/ JS: 
┌─────────────┬───────────┬─────────────┬───────┬───────┬────────┬────────────┐
│ Name        │ Serialize │ Deserialize │ Total │ Ratio │ Size   │ Size ratio │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ JSON        │ 1ms       │ 1ms         │ 2ms   │ 1     │ 122 kB │ 1          │
├─────────────┼──────────────┼────────┼────────────┤
│ Sia         │ 24ms      │ 18ms        │ 42ms  │ 21    │ 110 kB │ 0.91       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ Sia Lab     │ 24ms      │ 19ms        │ 43ms  │ 21.5  │ 110 kB │ 0.91       │
├─────────────┼───────────┼─────────────┼───────┼───────┼────────┼────────────┤
│ MessagePack │ 11ms      │ 2ms         │ 13ms  │ 6.5   │ 115 kB │ 0.95       │
└─────────────┴───────────┴─────────────┴───────┴───────┴────────┴────────────┘

dumganhar avatar Sep 21 '22 05:09 dumganhar

According to the performance test result, it's better to use JSON format for deserializing JS objects.

dumganhar avatar Sep 29 '22 05:09 dumganhar