JavaScriptであるデータを文字列から整数に変換する時に,下記のような書き方をよく見かけるんだけど,これって本当に正しいんだろか?って言うのが,そもそもの疑問.
var num = “123456789” ? 0;
調べてみると,文字列から整数に変換するためには他にも方法がある.じゃぁ,それぞれの処理速度って,どうなってるんだろう?っていうことで気になったので調べてみた.
実験概要
以下の4パターンで速度を比較する.
- 文字列 ? 0
- 文字列 / 0
- parseInt(文字列,10)
- 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の場合
- 2
- 2
- 81
- 155
Google Chromeの場合
- 209
- 218
- 114
- 194
InternetExplorerの場合
- 266
- 289
- 1172
- 753
考察
情報系を勉強してる人とか,組み込み系の経験がある人には当然かも知れないけど,徐算より減算のほうが処理速度が速い.
減算を用いて文字列から整数型に変換する手法は,実際によく使われている方法であり,実験の結果からも,FirefoxとInternetExploereにおいては,これが最速の方法であることがわかる.
ただし,Google Chromeにおいては,parseIntやNumberを利用して型変換を行ったほうが速度が速い.とはいえ,10倍も速度差があるわけではないので,余程の事がない限りは減算を利用して型変換を行えば良いと思う.