Claude Fable 5 が教えてくれた FastEnum の高速化テクニック (2)
DRANK

前回に引き続き Claude Fable 5 を利用した FastEnum のパフォーマンスチューニングについて解説していいます。今回は数値の範囲チェックについてです。該当の Pull-Request は以下。 Fable 5 が教えてくれた高速化テクニックたち文字列のハッシュ値生成数値の範囲チェック (← イマココ改善前FastEnum の .IsDefined(enum) は enum の定義値の分布に応じて実装が分岐しています。ざっくり以下のような実装になっていました。[MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsDefined(T value) // where T : struct, Enum { if (EnumInfo<T>.s_isContinuous) // Fast Path { // 値が連続している場合は範囲チェックのみ var min = toNumber(EnumInfo<T>.s_minValue); // 定義されている中での最小値 var max = toNumber(EnumInfo<T>.s_maxValue); // 定義されている中での最大値 var val = toNumber(value); return (min <= val) && (val <= max); } else // Slow Path (といっても速いけど) { // 値が非連続な場合は辞書から Lookup return EnumInfo<T>.s_memb…

zenn.dev
Related Topics: AI AI Text Generator