続・ハッシュコードをバラけさせる意味はあるのか
というわけで、.NET Frameworkのご本尊様を調べてみたのですが。
http://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,290
このコードを見る限り、GetHashCode()は別にバラケさせる必要はありませんね。
コスト比皆無です。
インクリメントで十分じゃありませんか。むしろ、インクリメント確実じゃないですか。
剰余で負の値が重複することを恐れて0x7fffffff論理積とか正味31bitとか、いろいろはっきりしました。
ビット演算は別に遅いとは言いませんが、uintへのキャストの方が最適化時に高速ではないのでしょうか・・・。
自分がレビュワーならそう指摘を書きます。
Dictionaryみたいな凄い使用頻度を持つクラスでこういうこともあります。