基本上我正处于友好的代码优化之争(为了获得最快的程序),我试图找到一种比多维数组更快地访问硬编码数据字典的方法。
例如获取x:
的值int x = array[v1][v2][v3] ;
我已经读过自定义数组中的嵌套switch语句可能更快。或者有没有一种方法可以更直接地访问内存,类似于C中的指针。任何想法都赞赏!
我的'竞争对手'正在使用真值表,想法就是找到更快的东西!
非常感谢 萨姆
答案 0 :(得分:4)
如果数组的形状是规则的(即MxNxK
用于某些固定的M
,N
和K
),您可以尝试展平它以获得更好的参考局部性:
int array[] = new int[M*N*K];
...
int x = array[v1*N*K + v2*K + v3];
此外,如果整个数组不适合CPU缓存,您可能需要检查访问该数组的模式,或者重新排序索引或更改代码以更好地使用缓存