Как приблизиться к вариациям производительности Java 2D между разными компьютерами? - PullRequest
7 голосов
/ 21 июля 2011

Я разрабатывал карточную игру на Java для Windows. Он отлично работает на моем ноутбуке и некоторых других, но на многих других системах (даже на нескольких новых, как Mac, так и Windows) анимация невероятно медленная.

Я нашел Инструментарий пользовательского интерфейса для Java лучшим ресурсом до сих пор, но не смог добиться значительного улучшения. Я использую библиотеки AWT / Swing.

Вопрос:
Глядя на мою игру , (<1,5 МБ), как может случиться, что на некоторых компьютерах (аналогичных спецификаций) производительность кажется значительно ниже, чем на моем ноутбуке? Все приложение управляется событиями, и я выполнил большую часть оптимизации, которую, я считаю, можно было бы сделать, учитывая реализацию. </p>

У меня такое чувство, что оно связано с памятью. Я создаю (совместимый) и затем сохраняю все мои изображения в массиве в начале, а затем ссылаюсь на них там.

Примечание: я решил сделать эту игру, чтобы я мог учиться и практиковать некоторые новые идеи, поэтому я не просто пытаюсь им поделиться - мне действительно интересно узнать, что здесь происходит.

Ответы [ 4 ]

5 голосов
/ 21 июля 2011

Не во всех операционных системах конвейер рендеринга Java 2D поддерживает аппаратное ускорение с помощью графического процессора.Это зависит от используемой вами реализации Java.

Одна из новых функций для реализации Oracle SE 7 (которая выйдет в конце месяца) заключается в следующем: конвейер XRender дляJava 2D , что означает, что она будет намного лучше работать с 2D-графикой в ​​Linux.

В Windows в обновлении 10 для Java SE 6 были сделаны некоторые улучшения, улучшающие производительность Java 2D с помощью аппаратного ускорения Direct3D ( источник ).

3 голосов
/ 30 июля 2011

.. почему на некоторых компьютерах производительность может быть как минимум вдвое меньше, чем на моем ноутбуке?

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

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

3 голосов
/ 21 июля 2011

Для Mac вы должны попробовать системные свойства и подсказки рендеринга, описанные в этом документе, , в частности, те, которые говорят Java, чтобы использовать собственный рендер Quartz, а не рендер Sun.

1 голос
/ 06 августа 2011

Попробуйте вставить его в профилировщик и посмотреть, что получится. Я бы сделал это как на Windows, так и на Mac и сравнил, где именно у вас возникла проблема. JProfiler мой любимый, но YourKit тоже хорош. Вы можете получить пробную версию на 30 дней, что должно быть достаточно для выяснения этого.

Вероятно, это связано с графическим аппаратным обеспечением, аппаратным ускорением и программным обеспечением, поскольку в этой теме отмечена такая разница между Mac и Windows.

...