Когда выгодно переносить вычисления с Java на собственный метод? [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Когда выгодно переносить вычисления с Java на собственный метод? [закрыто]

Сообщение Anonymous »


Я написал довольно успешную программу на Java для создания и отображения фрактальных изображений Мандельброта. Хотя меня это вполне устраивает, в краевых областях графика, где требуются тысячи итераций, чтобы определить, находится ли точка (пиксель) в наборе или близко к нему, время выполнения вычислений для изображения 1440x960 может превышать 20 секунд. Итак, в любом случае нуждаясь в практике C++, я решил перенести большую часть из более чем 7 миллионов операций с плавающей запятой, необходимых в таких ситуациях, в собственный метод, реализованный на C++, ожидая значительного увеличения производительности. К моему удивлению, когда я это сделал, оказалось, что реализация на C++ была примерно на 5 % медленнее, чем реализация всего этого на Java.

Моя выбранная реализация заключалась в том, чтобы выполнять вычисления для одного столбца за раз в C++, поэтому остается 1440 вызовов/изображений метода C++, которые включают по одному вызову GetDoubleArrayElements() и ReleaseDoubleArrayElements() с любыми накладными расходами Java, которые влекут за собой передать обратно значения счетчика 960.

Мне было бы очень интересно услышать мнения о том, что здесь происходит. Действительно ли компиляция или оптимизация Java на лету настолько эффективны? Достаточно ли велики накладные расходы на передачу обратно массивов из 960 элементов? Что-то еще?

Спасибо
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»