概要
そういえば、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.Parseint.TryParseConvert.ToInt32
でした。なんでなんでしょうか。


