【发布时间】:2012-09-10 06:25:37
【问题描述】:
在我的应用程序中,我有一个非常大的字节数组,它是一个扁平的 3 维数组,我们使用 3 个嵌套的 for 循环 (x, y, z) 填充数组,然后我们使用一点点得到我们想要的值一点数学,最具体地说:
获取数组中的索引:
return x + z*SizeX + y*SizeX*SizeZ;
并返回 x/y/z 坐标,给定一个索引:
int index = pos;
var y = (ushort) (pos/SizeX/SizeZ);
pos -= y*SizeX*SizeZ;
var z = (ushort) (pos/SizeX);
pos -= z*SizeX;
var x = (ushort) pos;
return new BlockPos(x, y, z, index, this);
首先,我想第二个可以提高效率,我只是不知道该怎么做,任何帮助将不胜感激:P
我的主要问题是,为 y 和 x 值(在加载类时填充)创建一个查找表会更快,还是将乘法保留在那里更快?
编辑 在某些情况下,这个数学被称为很多,所以如果它更快,即使对于更长的启动它也会使差异更好。
【问题讨论】:
-
这是 c#,已编辑主帖以显示这一点。
-
我已经把它作为一个句子取出并添加它作为一个标签。这样做的好处是代码现在很好地格式化为 c#。
-
谢谢,我没有意识到它会将代码重新格式化为语言规范!此外,多维数组通常被认为是不好的,这些数组中可能有数百万字节。
标签: c# performance comparison multiplication lookup-tables