【发布时间】:2016-12-15 10:13:27
【问题描述】:
我有一个环绕的矩阵。
m_matrixOffset 指向环绕矩阵的第一个单元格(0, 0)。因此,要访问一个单元格,我们有下面的函数 GetCellInMatrix 。每次有人访问一个单元格时都会执行回绕(在 while 循环中)的逻辑。每秒执行数千次。有没有办法使用一些查找或其他方式来优化它。 MAX_ROWS 和 MAX_COLS 可能不是 2 的幂。
struct Cell
{
Int rowId;
Int colId;
}
int matData[MAX_ROWS][MAX_COLS];
int GetCellInMatrix(const Cell& cellIndex)
{
Cell newCellIndex = cellIndex + m_matrixOffset ;
while (newCellIndex.rowId > MAX_ROWS)
{
newCellIndex.rowId -= MAX_ROWS;
}
while (newCellIndex.colId > MX_COLS)
{
newCellIndex.y -= MAX_COLS;
}
return data[newCellIndex.rowId][newCellIndex.colId];
}
【问题讨论】: