Как отключить проверку границ массива в Java с открытым исходным кодом? - PullRequest
2 голосов
/ 30 октября 2008

Теперь, когда 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. Но мне все равно, так как я всегда могу связать перекомпилированную виртуальную машину вместе с моим приложением.

Я не знаю, как сделать это нетривиальное изменение, поэтому вопрос. Обратите внимание, что меня не интересует подход JNI.

1 Ответ

2 голосов
/ 30 октября 2008

Если вы можете сказать, что индекс массива не может выходить за пределы, возможно, компилятор тоже может, они в последнее время стали довольно впечатляющими в статическом потоке данных и анализе побега. Сначала я бы проверил, выполняется ли эта проверка границ. Здесь вам может помочь javap.

Конечно, я предполагаю, что вы следуете совету Кнута о том, что преждевременно не оптимизируете, и что вы измерили свое приложение и решили, что на эту разницу стоит потратить время. Если это так, пожалуйста, опубликуйте свои результаты, так как это будет очень интересно для меня. даже если мои приложения не выиграют от такой настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...