Тестирование производительности приложения Swing - PullRequest
3 голосов
/ 13 февраля 2010

У нас есть приложение на Java Swing, которое в основном представляет собой двухуровневое приложение - уровень пользовательского интерфейса, который подключается к базе данных и выполняет тяжелую работу на обоих уровнях.

Мы наблюдали некоторые проблемы с производительностью приложения и ищем стратегии для нагрузочного тестирования приложения.

По сути, наша цель - запустить несколько экземпляров этого приложения и смоделировать нагрузку, которая поможет нам определить эти условия производительности в тестовой среде.

Я ищу предложения о том, как мы можем это сделать:

  • Какие инструменты вы бы порекомендовали?
  • Подходы (Виртуализация? / Citrix)

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

Ответы [ 3 ]

3 голосов
/ 13 февраля 2010

ОК, я был почти уверен, что у вас JTable .... Это, вероятно, ОГРОМНАЯ часть проблемы.

Но это можно решить, я не знаю, как скопировать ссылку на предыдущий ответ, который я сделал, но в основном для финансовых данных и JTable, вы хотите прочитать следующее ...

Специально для этой цели у Sun есть учебник под названием «Рождественская елка», в котором специально рассматриваются «часто обновляемые данные, например финансовые», проблемы с медлительностью Swing / JTable.

Вот, пожалуйста, «Как создать часто обновляемый JTable, который хорошо работает»:

http://java.sun.com/products/jfc/tsc/articles/ChristmasTree/

Одной из вещей, которые мне показались поразительными, было постоянное отображение используемой памяти: вы можете захотеть это сделать.

Вы будете поражены тем, сколько ненужного дерьма генерируется стандартным JTable, замедляя все и делая, конечно, запуск GC чаще, чем следует: создание ненужных объектов, ненужное графическое перерисовывание и т. Д. для непригодного для использования приложения, даже на очень быстрых установках.

Итак, начните реализовывать все трюки, приведенные в ссылке, которую я вам дал, и вы увидите, что все будет работать намного лучше. У меня сейчас очень сложный и постоянно обновляемый JTable, и теперь все в порядке: *

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

Как только вы начнете работать с «данными реального мира» (например, с финансовыми данными;), вам нужно выполнить описанные там шаги, если вы хотите, чтобы ваш JTable работал хорошо.

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

2 голосов
/ 13 февраля 2010

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

0 голосов
/ 13 февраля 2010

Когда речь идет о любом виде тестирования, включая производительность, гораздо проще тестировать приложение, когда пользовательский интерфейс и бизнес-логика разделены. Вы упомянули, что у вас есть пользовательский интерфейс, который делает тяжелую работу, и это, как правило, не очень хорошая вещь. Вы хотели бы иметь возможность протестировать приложение, просто используя его API (используя API, которые вызывает пользовательский интерфейс).

При тестировании производительности всего приложения с помощью пользовательского интерфейса есть несколько инструментов тестирования производительности, которые вы можете использовать, чтобы помочь. На ум приходит JMeter, и некоторые поиски в Google наверняка найдут другие.

Это действительно облегчает тестирование, позволяя модульному коду и разделять пользовательский интерфейс и бизнес-код, поэтому вам будет легче изолировать компоненты и определить узкие места в производительности. Если большая часть логики находится за пределами пользовательского интерфейса, вы также можете использовать стандартные профилировщики Java, чтобы увидеть, на что тратится большая часть времени.

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