概要
そういえば、C#にはConvert.ToInt32
とint.Parse
メソッドというのがあります。
どちらの方が速いのでしょうか?
実験
int.Parse(速い) < Convert.ToInt32(遅い)
表のように処理A/Bを設定します。
処理A | 処理B |
---|---|
Convert.ToInt32 | int.Parse |
処理B(int.Parse
)の方が最初は高速でしたが、途中から有意な差は見られません。
処理の順番が原因かもしれません。そこで、6回目に対象のstring文字列を変更し、10連続で同じ処理を繰り返します。
すると、プログラムを書いた順番に関係なく、やはり処理B(int.Parse
)の方が高速なことが分かります。
Parse vs TryParse
int.Parse(速い) < int.TryParse(遅い)
int.Parse
とint.TryParse
でも、やはりint.TryParseが高速です。
処理A | 処理B |
---|---|
int.TryParse | int.Parse |
結果、
同列です。初回のメソッド呼出しに限ってint.Parse
の方が速いという結果が得られています。処理の順番を入れ替えても同じ結果でした。TryParse
はプロセスの立ち上げに時間がかかっている印象です。
以上を踏まえ、実行速度に順位をつけると速い順に
int.Parse
int.TryParse
Convert.ToInt32
でした。なんでなんでしょうか。