访问数据表Java的最快方法

时间:2011-12-13 16:22:38

标签: java arrays performance optimization multidimensional-array

基本上我正处于友好的代码优化之争(为了获得最快的程序),我试图找到一种比多维数组更快地访问硬编码数据字典的方法。

例如获取x:

的值
int x = array[v1][v2][v3] ;

我已经读过自定义数组中的嵌套switch语句可能更快。或者有没有一种方法可以更直接地访问内存,类似于C中的指针。任何想法都赞赏!

我的'竞争对手'正在使用真值表,想法就是找到更快的东西!

非常感谢 萨姆

1 个答案:

答案 0 :(得分:4)

如果数组的形状是规则的(即MxNxK用于某些固定的MNK),您可以尝试展平它以获得更好的参考局部性:

int array[] = new int[M*N*K];
...
int x = array[v1*N*K + v2*K + v3];

此外,如果整个数组不适合CPU缓存,您可能需要检查访问该数组的模式,或者重新排序索引或更改代码以更好地使用缓存