1秒でも早く動く快適なWebアプリケーションを開発することはフロントエンドプログラマやWebデベロッパが常に追い求めるところだが、SitePenにおいてTom Trenka氏による興味深い分析結果"String Performance: an Analysis"が公開されたので紹介しておきたい。同氏のドキュメントはテクニック的に参考になるものだ。
文字列処理はパフォーマンスを左右する重要な要素のひとつだ。Javaなどよく使われるプログラミング言語では文字列は変更不可能なオブジェクトとして扱われる。変更不可能にすることで文字列の重複を防ぎ、不要なデータのコピーを避けることで処理速度の向上が実現できるからだ。そのかわり文字列を編集する場合には、変更後の文字列を新しく生成するという手段をとる。このため文字列の編集という操作は新しく文字列を生成する操作と等価であるため、コストが高い処理になる。
そこで使われるのが、編集を主におこなう場合は文字列を使うのではなく、文字配列を使って処理をおこない、必要になった時点で配列から文字列を生成する方法だ。変更不可能文字列オブジェクトの利点を保ちつつ、文字列の編集コストも下げることになるというテクニックである。
JavaScriptの文字列も基本的に変更不可能だ。このため同じ規則が当てはまりそうだが、Tom Trenka氏が公開しているベンチマーク結果によれば、その法則はかならずしもJavaScriptには当てはまらないようだ。いくつかの例外はあるものの、文字列のメソッドを使うよりも"+="が良好に動く。それぞれのブラウザに実装されているネイティブな文字列処理が十分に最適化されているため、配列を使った方が高速な場合もあるが"+="が十分に最適化されているようにみえる。
比較されているなかではSafariがきわめて良好な結果を出している点も注目されるところだ。またブラウザごとに例外がいくつかあり、より高速な処理方法や特定の処理内容が遅くなるものもある。"String Performance: an Analysis"にはそうした内容をまとまっているため、JavaScriptプログラミングをおこなっている場合にはブックマークしておきたい。
| ビールの"のど越し"感にはホップの香りが重要 - サッポロビールが発見 [09:00 5/18] |
| Linux Mint 15登場迫る [08:00 5/18] |
| 米Google、量子コンピュータ施設を開設 - 機械学習の研究に活用 [05:50 5/18] |
| 産総研など、夏季と冬季で太陽光を自動調節する省エネ調光シートを開発 [19:37 5/17] |
| 4連続の大規模な太陽フレア発生 [19:08 5/17] |
|
フェイス、ゲーミングPCのオプションで購入可能な周辺機器を一新 [18:00 5/18] パソコン |
|
OVERCLOCK WORKS、OC駆動4.4GHzのCore i7やGeForce TITAN×2搭載の独自PC [17:43 5/18] パソコン |
|
「夜の須田課長」のクマザワミキコ、リュウで新連載を開始 [17:01 5/18] ホビー |
|
[注目映画紹介]「旅立ちの島唄~十五の春~」三吉彩花が好演 南大東島に住む15歳の少女の成長物語 [16:56 5/18] エンタメ |
|
[新作ゲーム紹介]「ヴァルハラナイツ3」 監獄城が舞台のRPG 最大7対7の迫力バトルも [16:30 5/18] ホビー |