Я не вижу здесь ничего, что могло бы вызвать проблемы с производительностью - по крайней мере, с таким большим отклонением. Доступ к массиву должен быть чрезвычайно быстрым - даже если это 4-мерные массивы. [[Хорошие усилия на этом.]]
Четверть секунды - это не огромное количество времени, которое заставляет меня задуматься, лжет ли вам профилировщик об источнике проблемы. Возможно, он плохо реагирует на многомерные массивы или какой-то другой атрибут этого метода, который не сразу очевиден - по крайней мере для меня.
Одна возможность, пусть и удаленная, заключается в том, что ваша программа поменялась местами, и эти массивы довольно большие. Если к ним не обращаются очень часто, есть ли вероятность того, что вы увидите какой-нибудь ввод-вывод, когда некоторые страницы памяти поменялись местами?
Вы прокомментировали, что используете настенные таймеры, чтобы определить, что процедура занимает 250 мс. Вы уверены, что процессор фактически выполнял этот метод в течение этого периода времени? Может ли это быть причиной конфликта потоков, который занимает центральный процессор в какой-то другой части программы? Можете ли вы увидеть, как часто вы видите пики процессора, когда этот метод занимает много времени?
Есть ли шанс, что вы видите блокировку кучи GC, и это влияет на доступ к массиву больше, чем другие процедуры? Можете ли вы посмотреть графики памяти, чтобы увидеть, видите ли вы корреляцию? Влияет ли увеличение программы на время или частоту возникновения проблемы? Это будет более серьезной проблемой, если вы используете Java <= 1.5. </p>