JavaScript

[JavaScript] 数値を文字列に変換する時最もパフォーマンスが良い方法

投稿日:2018年8月4日 更新日:

数値を文字列に変換するには、以下3種類がありますが
どれが最もパフォーマンスがよいか調べてみました。

サンプルソース

それぞれの方法を1億回ずつ処理を行い、時間を計測します。

例)数値を文字列にする時間を計測する

(Chromeで実行した結果例)
cnt1: 467.323974609375ms cnt2: 899.31005859375ms cnt3: 3025.0009765625ms

Chromeで実行した結果ですが、空文字を付加する方法が最も早いですね。
一番書きそうなパターンの.toString()はかなり遅いです。

個人的には空文字を付加する書き方は、美しくないのであまり好きではないですが・・

まとめ

  • 数値を文字列に変換する時は、空文字を付加する方法がパフォーマンス的にベスト。
  • とはいえ、サンプルのように大量に変換しないかぎり実感できる程のスピード差はないので、好みの書き方で書くのがよいかと思います。

2020/8/19 追記

コメント欄よりご指摘を頂きましたので、ループで使用している変数iをキャスティングするパターンを試してみました。

コメントありがとうございますm(_ _)m

例)数値を文字列にする時間を計測する(数値が毎回変更するパターン)

(Chromeで実行した結果例)
cnt1: 13366.6767578125ms cnt2: 14554.533935546875ms cnt3: 13850.64404296875ms

結果、どのパターンもあまり差はありませんでした。
念のため10回ぐらい実行してみたのですが、大体おなじぐらいの結果となりました。

今回のサンプルの方が実態に即していると思いますので、
結果、どのパターンでも性能に大差はないと言えます。

なので、コーディングは好みの書き方で書くのがよいかと思います。

スポンサーリンク

スポンサーリンク

-JavaScript
-

執筆者:



  1. ty より:

    計測サンプルの
    > '' + a;
    の後の
    > console.timeEnd('cnt2');

    > console.timeEnd('cnt1');
    ではないですか?

    あと、変動しない変数aを繰り返しキャストしても、最適化されてしまっていて正確な比較はできないかと思います。
    ループで使っている変数iをキャスティングしたほうが良いかと思いますがどうでしょう。

    • とら より:

      コメントありがとうございます。

      cnt2はcnt1の間違いです。
      変数iを使う方法は記事に追記させていただきました。

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサーリンク