はじめに
「FastEnum」をプロジェクトに追加することで
高速な列挙型の API を使用できるようになります
インストール
Visual Studio メニューの「ツール>NuGet パッケージ マネージャー>
ソリューションの NuGet パッケージの管理」を選択します
「参照」タブを選択して、検索欄に「FastEnum」と入力して
表示された「FastEnum」を選択します
インストールしたいプロジェクトをチェックして「インストール」ボタンを押します
使い方
using FastEnum; ... // Enum.GetValues var values = FastEnum<Fruits>.Values; // Enum.GetNames var names = FastEnum<Fruits>.Names; // Enum.ToString var name = Fruits.Apple.ToName(); // Enum.IsDefined var defined = FastEnum<Fruits>.IsDefined( Fruits.Apple ); // Enum.Parse var value = FastEnum<Fruits>.Parse( "Apple" ); // Enum.TryParse var ok = FastEnum<Fruits>.TryParse( "Apple", out var value );
速度検証
using FastEnum; using System; using System.Diagnostics; class Program { enum Fruits { Unknown, Apple, Banana, Peach, Orange, Grape, Lemon, Melon, Strawberry, Cherry, WaterMelon, Pear, Pineapple, } static void Main() { var count = 100000; var sw = new Stopwatch(); sw.Start(); for ( int i = 0; i < count; i++ ) { var result = FastEnum<Fruits>.TryParse( "Apple", out var value ); } sw.Stop(); Console.WriteLine( sw.Elapsed.TotalSeconds ); } }
上記のようなコードで各関数を
100,000 回呼び出したときにかかった時間(秒)を計測しました
関数 | 通常 | FastEnum |
---|---|---|
GetValues | 0.3975 秒 | 0.0327 秒 |
GetNames | 0.0194 秒 | 0.0274 秒 |
ToString | 0.0729 秒 | 0.0318 秒 |
IsDefined | 0.0519 秒 | 0.0310 秒 |
Parse | 0.0492 秒 | 0.0453 秒 |
TryParse | 0.0460 秒 | 0.0448 秒 |