適当な思いつきで書くブログ

UbuntuやPerlやJavaScriptやVimやZshやShellScriptやMySQLと戯れている中で適当な思いつきでやってみたことを書いています。

numberをstiringで扱うときは" number+'' "の方が" toString(number) number.toString() "より断然速め


追記というか訂正というか、よりにもよって関数の使い方を間違えておりました…。お恥ずかしい…(/−\*)。

ご指摘ありがとうございました。


numberオブジェクトをstringとして扱いたいときに、下の二つの方法があるかと思います。


空文字足し算

hoge = 1;
typeof(hoge + "");  //string

toString()関数

hoge = 1;
//typeof(toString(hoge));  //string
typeof(hoge.toString());  //string

どちらも同じくstringオブジェクトとして扱えるようになるのですが、処理速度におおきく違いがあります(特にFireFoxで)。

"number+''"と"toString(number) number.toString()"の処理速度の違い

以下サンプルコード

空文字足し算

for (var i = 0; i < 100000; i++) {
  i + '';
};

toString()関数

for (var i = 0; i < 100000; i++) {
  //toString(i);
  i.toString();
};

結果

IE6

空文字足し算 toString()関数
1 320ms 530ms
2 310ms 621ms
3 361ms 561ms

FireFox2(win)

空文字足し算 toString()関数
1 30ms 4076ms 531ms
2 60ms 5186ms 570ms
3 10ms 4707ms 541ms

IEだと200%, FireFoxだと比較対象にならないくらい違いがでました。


デモはこちら