一つは集合型の内部に格納されている列挙されている場合、いずれかのタイプのハッシュコードの内部(典型的な「multiply by primes」ハッシュ関数を仮定して)ことを含めることができます。ただSomeEnum.GetHashCode()
を呼び出すと、リリースビルドでもJITがインスタンスを囲むように見えます。このプロファイリング列挙体のハッシュコードをボックス化せずに取得するにはどうすればよいですか?
は自分のアプリケーションの時間の約10%は、様々なGetHashCode
関数の内部ボクシングの列挙を過ごした示しています。
IEquatable
または類似のインターフェイスを実装するいくつかの値タイプは、GetHashCode
を静的メソッドとして呼び出すことができます。ボクシングを避ける。しかし、System.Enum
は、GetHashCode
の静的過負荷を提供しません。使用すべきであるが、ボクシングを避けるコードを計算するいくつかの手段はありますか?
なぜ全然気に? enumは独自のハッシュコードです。ちょうどintにキャストし、それを1日と呼んでください。 –
@レイモンド:私はそれが悪い分布をもたらすかもしれないと思った。それをもう一度考え直すと、それがうまくいくかどうかわかります。 –
@Raymond:確かに、この特定のテストケースではうまくいきます。私は –