【问题标题】:How to disable array bounds checking in opensource Java?如何在开源 Java 中禁用数组边界检查?
【发布时间】:2010-09-19 22:41:18
【问题描述】:

既然 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

我了解在此更改后,我的本地版本将不再是 Java。但我不太在意,因为我总是可以将重新编译的 VM 与我的应用程序捆绑在一起。

我不知道如何进行这种不平凡的改变,因此提出了这个问题。请注意,我对 JNI 方法不感兴趣。

【问题讨论】:

  • 我无法通过 pre 或 blockquote 格式化上面的代码(3 个 for 循环)。很抱歉,这是现在的眼睛。
  • @simonsharry,Greg Hewgill 为您修复了它。使用四个空格来表示代码。

标签: java arrays open-source


【解决方案1】:

如果您能判断出数组索引不会越界,也许编译器也可以,它们最近在静态数据流和逃逸分析方面的表现令人印象深刻。我会先检查是否正在执行边界检查。 javap 可以在这里为您提供帮助。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
  • 2018-04-17
  • 2013-06-22
  • 2012-03-07
  • 2011-06-14
  • 1970-01-01
相关资源
最近更新 更多