【发布时间】:2018-10-31 03:44:49
【问题描述】:
我必须考虑一个三维空间,其中元素是均匀分布的。每个元素由三个坐标 x、y 和 z 描述。我必须以这种方式计算它们之间的距离:
float distance = 0;
for(int ix = 0; ix<n; ix++) {
for(int iy = 0; iy<n; iy++) {
for(int iz = 0; iz<n; iz++) {
for(int jx = 0; jx<n; jx++) {
for(int jy = 0; jy<n; jy++) {
for(int jz = 0; jz<n; jz++) {
distance = distance + calcDistance(ix, iy, iz, jx, jy, jz) / 2
}
}
}
}
}
}
对于超过 100 000 个项目的多维数据集,这需要相当长的时间。我除以两个,因为每个距离都被计算两次,但如果我可以省略第二次计算,我可能会加倍速度。
在一维中,这很容易。一个从 0 到 n 的循环,另一个从 i 到 n 的循环,我只考虑每个距离一次。但我不能在这里做同样的事情。有没有办法优化这个?
【问题讨论】:
-
很确定有一个公式
标签: loops optimization mathematical-optimization