Skip to content

v8: add benchmarks to serialize/deserialize and improve if statements

I added 2 benchmarks to serialize and deserialize method in order to understand the performance impact of replacing a really big if statement with a switch statement. Here are my findings:

Serialize

Before

➜  node git:(perf/v8-deserialize-serialize) ./node-master benchmark/v8/serialize.js
v8/serialize.js n=1000000: 699,777.9223973043
➜  node git:(perf/v8-deserialize-serialize) ./node-master benchmark/v8/serialize.js
v8/serialize.js n=1000000: 696,074.8630130064
➜  node git:(perf/v8-deserialize-serialize) ./node-master benchmark/v8/serialize.js
v8/serialize.js n=1000000: 704,981.8835623765

After

➜  node git:(perf/v8-deserialize-serialize) ./node-debug benchmark/v8/serialize.js
v8/serialize.js n=1000000: 702,113.8598850783
➜  node git:(perf/v8-deserialize-serialize) ./node-debug benchmark/v8/serialize.js
v8/serialize.js n=1000000: 705,363.8894045315
➜  node git:(perf/v8-deserialize-serialize) ./node-debug benchmark/v8/serialize.js
v8/serialize.js n=1000000: 703,806.1453469822

Deserialize

Before

➜  node git:(perf/v8-deserialize-serialize) ./node-master benchmark/v8/deserialize.js
v8/deserialize.js n=1000000: 1,571,634.7166923403
➜  node git:(perf/v8-deserialize-serialize) ./node-master benchmark/v8/deserialize.js
v8/deserialize.js n=1000000: 1,567,321.4530283604
➜  node git:(perf/v8-deserialize-serialize) ./node-master benchmark/v8/deserialize.js
v8/deserialize.js n=1000000: 1,572,912.0436487873

After

➜  node git:(perf/v8-deserialize-serialize) ./node-debug benchmark/v8/deserialize.js
v8/deserialize.js n=1000000: 1,575,016.1488374511
➜  node git:(perf/v8-deserialize-serialize) ./node-debug benchmark/v8/deserialize.js
v8/deserialize.js n=1000000: 1,573,957.404044289
➜  node git:(perf/v8-deserialize-serialize) ./node-debug benchmark/v8/deserialize.js
v8/deserialize.js n=1000000: 1,579,010.319407197

Merge request reports

Loading