【问题标题】:Fastest way to access a table of data Java访问数据表的最快方法 Java
【发布时间】:2012-01-19 12:29:43
【问题描述】:

基本上,我正在进行一场友好的代码优化战(以获得最快的程序),我试图找到一种比多维数组更快地访问硬编码数据字典的方法。

例如获取 x 的值:

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

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

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

非常感谢 山姆

【问题讨论】:

  • 这更像是一个假设性的问题,纯粹出于不被殴打的固执! ...我可能不得不接受失败
  • 我会检查您是否需要 int 而不是 shortcharbyte 在大型集合中,它可以提高数据的缓存友好性。

标签: java arrays performance optimization multidimensional-array


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    相关资源
    最近更新 更多