2012-05-05 1 views
4

Возможно, есть кто-то, кто потратил на это время. Я работаю над графикой визуализации графики на Java, и я просто сделал некоторые тесты производительности.Java2D/Graphics2D performance

Когда я добавляю около 2000 вершин, соединенных границами 1000 - 3000, он становится действительно, очень медленным. Есть инструменты, которые делают способ лучше (gephi например) .. Как они это делают? Является ли аппаратное ускорение Java2D по умолчанию? Должен ли я использовать какую-то OpenGL-библиотеку?

Я рисую графики внутри JComponent, который перерисовывается таймером каждые несколько миллисекунд (на самом деле не имеет значения, если я даю ему 100 мс или 1 мс, он остается очень медленным).

Является ли мой подход ошибочным или не должен использовать Java2D для этого?

Благодарим за помощь!

+2

Вы формально профилировали свой код, чтобы вы знали, что рендеринг - это ваша бутылочная шее? Если нет, я сделаю это как первый шаг. –

+3

никогда не перерисовывайте все. это невозможно. кэшируйте все, что вы можете. –

+0

@ Ховкрафт: Я сделаю это, как только вернусь в понедельник. –

ответ

0

Как вам хотелось бы, вы, вероятно, захотите использовать VolatileImage, если работаете в Java2D, чтобы получить преимущества аппаратного ускорения.

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

LWJGL (http://lwjgl.org/) предназначен для игр, но позволяет использовать практически все соответствующие функции OpenGL, что тоже хорошо для визуализации. Возможно, стоит попробовать!