プログラミング/javascript/文字列の連結 の変更点
更新- 追加された行はこの色です。
- 削除された行はこの色です。
- プログラミング/javascript/文字列の連結 へ行く。
- プログラミング/javascript/文字列の連結 の差分を削除
[[公開メモ]] * 文字列の連結に join を使うのは時代遅れ [#d984c7c5] 昔はたくさんの文字列を連結して長い文字列を使う場合に + を使うと遅くなるから、 一旦配列にしておいて join で繋ぐような最適化をすることが推奨されていました。 でも、それは遠い昔のことで、ずいぶん前から都市伝説とされていたそうですね。 恥ずかしながら知りませんでした。 - JavaScript文字列処理は"+="が十分高速、Safariもベター - JavaScript文字列処理は"+="が十分高速、Safariもベター~ http://news.mynavi.jp/news/2008/05/12/045/ 悔しいので一応自分でも確かめてみました。 * 現在の javascript ではそんな配慮は無駄なばかりか悪影響があるらしいです [#qd7fd704] LANG:javascript var count = 100000; var text = '1234567890'; var i, s, a; s = ''; console.time('append'); for(i=0; i<count; i++) s += text; console.timeEnd('append'); s = ''; console.time('append2'); for(i=0; i<count; i++) s = s + text; console.timeEnd('append2'); s = ''; console.time('unshift'); for(i=0; i<count; i++) s = text + s; console.timeEnd('unshift'); a = []; console.time('join'); for(i=0; i<count; i++) a << text; s = a.join(''); console.timeEnd('join'); http://jsbin.com/pigahijabo/2/edit?js,output chrome での結果は以下の通り。 LANG:console append: 138.354ms append2: 132.475ms unshift: 128.072ms join: 184.078ms Firefox での結果は以下の通り。 LANG:console append: 9.38ms append2: 8.64ms unshift: 57.58ms join: 42.02ms IE での結果は以下の通り。 LANG:console append: 317.353ms append2: 293.3ms unshift: 277.514ms join: 378.877ms いずれも join が一番遅く、何も考えずに + で連結していくのが一番だということが分かりました。 いずれも join が一番遅く、何も考えずに + で連結していくのが一番だということを確かめられました。
Counter: 8955 (from 2010/06/03),
today: 1,
yesterday: 2