コードの実行時間を短縮したい。いくつかのテスト結果を見ると、GetHashCode() が実行時間の 21.62% を占めていることがわかりました。
私も警告を受けました:
警告 1 DA0010: .*.GetHashCode() = 7,63; GetHashCode 関数は安価で、メモリを割り当てないようにする必要があります。可能であれば、ハッシュ コード関数の複雑さを減らします。
コード スニペット:
フィールドクラスの私の GetHashCode():
public override int GetHashCode()
{
int hash = 7;
hash = (hash * 13) + this.Coordinate.GetHashCode();
return hash;
}
座標クラスの私の GetHashCode():
public override int GetHashCode()
{
int hash = 17;
hash = (hash * 23) + this.Row.GetHashCode();
hash = (hash * 23) + this.Column.GetHashCode();
return hash;
}
編集:行と列は単なるバイト変数です。getアクセサーでバイトを返すプロパティを呼び出すだけです
数独クラスの私の GetHashCode():
public override int GetHashCode()
{
int hash = 7;
hash = (hash * 5) + this.Grid.GetHashCode();
return hash;
}
編集: Grid は type: の単なる多次元配列です。Field[,]
ここでは、 get アクセサーを介して Field[,] グリッドを返す Property と呼んでいます。
質問: GetHashCode() の複雑さを大幅に軽減し、パフォーマンスを向上させるにはどうすればよいですか? GetHashCode() メソッドのパフォーマンスが非常に低いのはなぜですか?