JavaScriptでArrayオブジェクトの文字列結合の速度検証
よく見るコードだとjoin使っているのが多いですがパフォーマンス的にはどうなんだ?というのを試してみる。
ggっても出てくると思うけど勉強がてらということで。
前提条件
検証パターンは以下の5つでそれぞれ100万回
- for文使って+演算子
- Array.forEachで+演算子
- Array.reduceで+演算子
- String.concat
- Array.join
順番は実装が嫌?な順
サンプルコード
結果
type | 速度 |
---|---|
for | 157.259ms |
Array.forEach | 215.781ms |
Array.reduce | 163.422ms |
String.concat | 265.373ms |
Array.join | 713.505ms |
やっぱりforが速いですね、ただこんな実装絶対したくない。
このレベルでfunctionとか作りたくないですしね。
ワンライナーで書きたいので、基本はArray.joinでちょっと処理が重なるときはString.concatぐらいがいいのかなぁ。
余談
jsfiddleと比べてChromeのデベロッパーコンソール上で実行すると異様にconcatが遅くなるのはなんででしょうかね。