.NET 4.6以降にて列挙型をキーとしたDictionaryは普通に速い
概要
列挙型(Enum)をキーとした辞書の実行速度に関して、これまでは遅いのでやめておくのが通説でしたが、 .NET4.6以降はかなり早くなっているとのことなので実際に調査してみました。
検証環境
- Unity 2018.2.0f2
- 1000万回ループした際にかかった時間を比較
テストコード
検証結果
.NET4.6以前 Enum time: 00:00:13.4472780 Int time : 00:00:02.1872700 .NET4.6に変更 Enum time: 00:00:02.6733198 Int time : 00:00:02.3185855
13.5秒 → 2.7秒 に短縮されてました。
まとめ
たしかに.NET4.6以降だと以前とは比べ物にならないほど高速化されていますね。 流石にIntよりは少し遅いですが、それでも十分に許容範囲だと思います。 どうしても速度が欲しい場合はIntで、それ以外は可読性重視で列挙型をキーにしても良さそうです。