【C#】Convert.ToInt32 と int.Parseはどちらが速いのか

概要

そういえば、C#にはConvert.ToInt32int.Parseメソッドというのがあります。
どちらの方が速いのでしょうか?

実験

int.Parse(速い) < Convert.ToInt32(遅い)

表のように処理A/Bを設定します。

処理A処理B
Convert.ToInt32int.Parse
image.pngimage.png
表1.Convert.ToInt32 vs int.Parse

処理B(int.Parse)の方が最初は高速でしたが、途中から有意な差は見られません。


処理の順番が原因かもしれません。そこで、6回目に対象のstring文字列を変更し、10連続で同じ処理を繰り返します。

すると、プログラムを書いた順番に関係なく、やはり処理B(int.Parse)の方が高速なことが分かります。

Parse vs TryParse

int.Parse(速い) < int.TryParse(遅い)

int.Parseint.TryParseでも、やはりint.TryParseが高速です。

処理A処理B
int.TryParseint.Parse
image.pngimage.png
表2.int.TryParse vs int.Parse

結果、

同列です。初回のメソッド呼出しに限ってint.Parseの方が速いという結果が得られています。処理の順番を入れ替えても同じ結果でした。TryParseはプロセスの立ち上げに時間がかかっている印象です。

以上を踏まえ、実行速度に順位をつけると速い順に

  1. int.Parse
  2. int.TryParse
  3. Convert.ToInt32

でした。なんでなんでしょうか。

投稿日:
カテゴリー: Script タグ:

作成者: rarafy

2013年くらいからUnityを触っているかもしれません。 特に書くこともありませんが、趣味は部屋の掃除です。

コメントする

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