Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在开源Java中禁用数组边界检查?_Java_Arrays_Open Source - Fatal编程技术网

如何在开源Java中禁用数组边界检查?

如何在开源Java中禁用数组边界检查?,java,arrays,open-source,Java,Arrays,Open Source,既然Java是开源的,我想做的第一件事就是禁用对某些代码块的数组边界检查,我非常确定我不能越界,性能非常重要 现在,我不是一个编译器/语法专家,所以任何语法对我来说都足够好:我可以想到一个: pragma_disable_array_bounds_checking_begin for(x = xMin; x < xMax; x += xIncr) { for(y = yMin; y < yMax; y += yIncr) { for(z = zMin; z &

既然Java是开源的,我想做的第一件事就是禁用对某些代码块的数组边界检查,我非常确定我不能越界,性能非常重要

现在,我不是一个编译器/语法专家,所以任何语法对我来说都足够好:我可以想到一个:

pragma_disable_array_bounds_checking_begin
  for(x = xMin; x < xMax; x += xIncr) {
    for(y = yMin; y < yMax; y += yIncr) {
      for(z = zMin; z < zMax; x += zIncr) {
        sample_and_draw(voxel[x][y][z]);
      }
    }
  }
pragma_disable_array_bounds_checking_end
pragma\u禁用\u数组\u边界\u检查\u开始
对于(x=xMin;x
我知道在这项更改之后,我的本地版本将不再是Java。但我不在乎,因为我总是可以将重新编译的虚拟机与我的应用程序捆绑在一起


我不知道如何去做这个不寻常的改变,因此这个问题。请注意,我对JNI方法不感兴趣。

如果你能告诉我数组索引不能越界,也许编译器也可以,那么他们最近在静态数据流和转义分析方面表现得相当出色。我会先检查边界检查是否正在执行。javap可以在这里帮助您


当然,我假设您遵循Knuth关于不要过早优化的建议,并且您已经衡量了您的应用程序,并确定这个差异值得花费时间。如果是这样的话,请把你的结果总结出来,因为这对我来说是非常有趣的。即使我的应用程序不会从这种调整中受益。

我无法通过pre或blockquote格式化上述代码(3个循环)。“很抱歉,这是现在的麻烦。”西蒙沙里,格雷格·休吉尔为你修好了。用四个空格表示代码。谢谢你的写作。请查看此链接(特别是第1页的最后几行和第2页的前几行):我确信JVM能够解决这个问题并生成最佳代码。您也可以尝试使用foreach(),但这似乎是一个很难证明是合理的微优化。总之,我仍然想知道如何禁用数组边界检查,而不考虑手头的问题。