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