kur.jp

バイオリンと自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

JavaScriptで文字列型から整数型への変換速度比較

JavaScriptであるデータを文字列から整数に変換する時に,下記のような書き方をよく見かけるんだけど,これって本当に正しいんだろか?って言うのが,そもそもの疑問.

var num = “123456789” ? 0;

調べてみると,文字列から整数に変換するためには他にも方法がある.じゃぁ,それぞれの処理速度って,どうなってるんだろう?っていうことで気になったので調べてみた.

実験概要

以下の4パターンで速度を比較する.

  1. 文字列 ? 0
  2. 文字列 / 0
  3. parseInt(文字列,10)
  4. Number(文字列)

実験環境

OS:Windows Vista

Webブラウザ:Firefox3.5.3,Google Chrome 3.0.195.24 ,Internet Explorer 7.0

実験コード

ベンチマークに利用したコードは以下の通り.

function useSub(){
     var startTime = new Date();
     for(var i = 0; i < 1000000;i++){
    var num = "123456789" - 0;
     }
     document.write(new Date() - startTime);
}
function useDiv(){
     var startTime = new Date();

     for(var i = 0; i < 1000000;i++){
    var num = "123456789" / 1;
     }
     document.write(new Date() - startTime);
}
function useparseInt(){
     var startTime = new Date();

     for(var i = 0; i < 1000000;i++){
    var num = parseInt("123456789",10);
     }
     document.write(new Date() - startTime);
}
function useNumber(){
     var startTime = new Date();

     for(var i = 0; i < 1000000;i++){
    var num = Number("123456789");
     }
     document.write(new Date() - startTime);
}
useSub();
document.write("");
useDiv();
document.write("");
useparseInt()
document.write("");
useNumber();

実験結果

Firefoxの場合

  1. 2
  2. 2
  3. 81
  4. 155

Google Chromeの場合

  1. 209
  2. 218
  3. 114
  4. 194

InternetExplorerの場合

  1. 266
  2. 289
  3. 1172
  4. 753

考察

情報系を勉強してる人とか,組み込み系の経験がある人には当然かも知れないけど,徐算より減算のほうが処理速度が速い.

減算を用いて文字列から整数型に変換する手法は,実際によく使われている方法であり,実験の結果からも,FirefoxとInternetExploereにおいては,これが最速の方法であることがわかる.

ただし,Google Chromeにおいては,parseIntやNumberを利用して型変換を行ったほうが速度が速い.とはいえ,10倍も速度差があるわけではないので,余程の事がない限りは減算を利用して型変換を行えば良いと思う.