【发布时间】:2013-04-15 12:35:28
【问题描述】:
不太清楚如何问这个问题,但我有 2 种方法(到目前为止)查找数组
选项1是:
bool[][][] myJaggegArray;
myJaggegArray = new bool[120][][];
for (int i = 0; i < 120; ++i)
{
if ((i & 0x88) == 0)
{
//only 64 will be set
myJaggegArray[i] = new bool[120][];
for (int j = 0; j < 120; ++j)
{
if ((j & 0x88) == 0)
{
//only 64 will be set
myJaggegArray[i][j] = new bool[60];
}
}
}
}
选项2是:
bool[] myArray;
// [998520]
myArray = new bool[(120 | (120 << 7) | (60 << 14))];
这两种方法都很好用,但是是否有另一种(更好的)方法来进行快速查找,如果速度/性能很重要,您会采用哪种方法?
这将用于chessboard implementation (0x88),主要是
[from][to][dataX] 用于选项 1
[(from | (to << 7) | (dataX << 14))] 用于选项 2
【问题讨论】:
-
我会选择最容易使用和阅读的选项。当你的代码完成并且你觉得它应该比现在更快时,你总是可以稍后进行优化。
-
@Nolonar,其实我现在就到了
-
我会使用一个带有所有三个参数的 getter 方法的大型数组。既快速又易读,并且允许将来进行简单的更改。
-
@Nolonar:这是国际象棋。您知道在编写第一行代码之前它还不够快。你总是需要更多的国际象棋表现。
-
数字 0x88、120 和 60 的故事是什么?