素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

+=とjoinの速度比較

JavaScript文字列処理は"+="が十分高速、Safariもベター | エンタープライズ | マイナビニュースにびっくりしたので、最近のFirefox(Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1a2pre) Gecko/2008080108 Minefield/3.1a2pre)でベンチマークを行なった。+=は確かに早い。

console.time("String.concat");
var s = "";
for (var i = 0;i < 10000;i++)
  s += String.concat(
    "aaa",
    "bbb",
    "cccc",
    "dddd"
  );
console.timeEnd("String.concat");
console.time("Array.prototype.join");
var s = "";
for (var i = 0;i < 10000;i++)
  s += ["aaa",
  "bbb",
  "ccc",
  "ddd"].join("");
console.timeEnd("Array.prototype.join");
console.time("String.concat.apply");
var s = "";
for (var i = 0;i < 10000;i++)
  s += String.concat.apply("",
    [
    "aaa",
    "bbb",
    "ccc",
    "ddd"
    ]);
console.timeEnd("String.concat.apply");
console.time("+= 1");
var s = "";
for (var i = 0;i < 10000;i++)
  s += "aaa" + "bbb" + "ccc" + "ddd";
console.timeEnd("+= 1");

console.time("+= 2")
var s = "";
for (var i = 0;i < 10000;i++) {
  s += "aaa";
  s += "bbb";
  s += "ccc";
  s += "ddd";
}
console.timeEnd("+= 2")

String.concat: 55ms
Array.prototype.join: 78ms
String.concat.apply: 143ms
+= 1: 14ms
+= 2: 32ms