Как улучшить производительность Java-проекта? - PullRequest
1 голос
/ 24 января 2012

У меня более 20M данных в MongoDB, и с помощью java-драйвера я пытаюсь получить данные и построить диаграмму с помощью JFreeChart.

У меня есть простой основной класс, который читает данные из MongoDb, создает набор данных и строит диаграмму. Когда я запускаю программу на ПК (3 Гбайт памяти, процессор i5), она работает очень медленно. За 10 часов она выполняет только 200 тыс. Данных. попробуйте запустить код на сервере IBM с 24 ГБ ОЗУ, но производительность будет такой же.

Это команда, которую я запускаю:

java -cp my-program.jar: external1.jar: external2: jar Graph

Разве это не должно быть быстро на сервере? Как я могу улучшить производительность?

Ответы [ 2 ]

1 голос
/ 16 июля 2012

Я решил проблему. Это не связано с Java, проблема вызвана Jfreechart.

Я сортирую данные на MongoDB и добавляю данные в XYSeries для создания набора данных.XYSeries имеет поле автосортировки в конструкторе и по умолчанию оно имеет значение true.Это означает, что когда вы добавляете новый элемент в набор данных, он проверяет, отсортированы ли элементы в серии.Установка значения false повышает производительность.

XYSeries series = new XYSeries("followersCount",false);

Во-вторых, я установил уведомление в false в методе add .Если он не установлен как ложный, он отправляет уведомление всем зарегистрированным слушателям, что снижает производительность.

series.add(1,2000,false);
0 голосов
/ 19 июня 2012

Кажется, вы находитесь на этапе развертывания.Итак, если у вас есть веб-приложение, которое будет работать на сервере, вам не следует просто запускать приложение.(.jar) Архив веб-приложений (.war) должен быть создан и установлен в ваш контейнер (Tomcat, Glassfish, Weblogic и т. д.).После этого, если у вас все еще есть проблемы с производительностью, это указывает на проблему с вашим кодом / логикой.

...