技術と趣味の亜空間

主にゲームプログラミングとその周辺に関する記事を不定期で上げていきます

.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で、それ以外は可読性重視で列挙型をキーにしても良さそうです。