最適化2
前回の最適化で気になったので調べてみた
http://you21979.hateblo.jp/entry/2012/10/19/143845
nodejsでswitch ~ case遅いとあったけど実際に試してみて5000超えたあたりから許容できないかもしれない
20000のenumを作ってcaseしまくってるのだが
https://github.com/you21979/nodejsbenchmark/blob/master/v8/bigswitchcase.js
switch文の上の方ほどはやく下のほうが遅い。キャッチできなくでも下のほうと同様に遅い。
switch1: 0ms
switch2: 3ms
switch3: 30ms
switch4: 89ms
switch5: 69ms
関数テーブルで実装したほうが早い
https://github.com/you21979/nodejsbenchmark/blob/master/v8/bigfunctable.js
switch1: 0ms
switch2: 0ms
switch3: 0ms
switch4: 1ms
switch5: 0ms
中身ジャンプテーブルに展開されないんかなぁ。
手で書いたswitch文は気にしなくてもいいがDSLなどから自動生成したdispatcherを扱う場合には気をつけたほうがいいかも。