2012-01-24 2 views
1

У меня есть данные более 20M в MongoDB и с помощью java-драйвера. Я пытаюсь получить данные и график графика, используя JFreeChart.Как улучшить производительность Java-проекта?

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

Это команда, я бегу:

Java -cp мой-program.jar: external1.jar: external2: баночка Graph

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

+4

Вы пытались предоставить Java часть этой памяти? Параметры '-Xmx' и' -Xms' заслуживают внимания. – Borealid

+1

Есть ли какая-нибудь причудливая математика? Я набираю 200 тыс. Точек данных за считанные секунды ... – Frankie

+0

Сработали ли вы, с какой плохой производительностью? Если вы просто запрашиваете данные и выбрасываете их, чтобы изолировать производительность поиска данных, это все равно занимает столько времени? –

ответ

1

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

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

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

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

series.add(1,2000,false); 
0

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

Смежные вопросы