我想减少我的代码执行时间。查看一些测试结果,我发现 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 只是一个类型的多维数组:Field[,]
,我只是在这里调用它的属性,它通过它的 get 访问器返回一个 Field[,] 网格。
问题:如何大大降低 GetHashCode() 的复杂性并提高其性能?为什么 GetHashCode() 方法的性能如此之低?