Увеличение скорости программы JAVA для машинного обучения - PullRequest
1 голос
/ 11 октября 2011

Я занимаюсь машинным обучением в Java, используя GATE Learning. У меня есть огромный набор данных для изучения. При использовании NetBeans я получил ошибку пространства Java кучи. Поэтому я предоставил 1600 МБ в параметре -Xmx. Теперь я не получаю ошибку пространства кучи, но это занимает достаточно времени для запуска! (работает 90 минут, и мне пришлось остановить процесс, так как я потерял терпение!).

Я не понимаю, следует ли мне увеличить объем ОЗУ (в настоящее время 4 ГБ) или обновить ОС (в настоящее время XP SP3, я слышал Vista и Win 7 лучше использовать ОЗУ и процессор) или обновить процессор (в настоящее время Dual Core E5500 2,80 ГГц )

Пожалуйста, расскажите, что я могу сделать, чтобы ускорить этот процесс!

Спасибо, Ришабх

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Получите профилировщик, такой как VisualVM или YourKit - запустите вашу программу - подключите профилировщик к вашей работающей программе - выясните, какие методы и объекты являются вашим узким местом - тогда как минимум Вы знаете, с чего начать улучшение вашей программы.

1 голос
/ 11 октября 2011

Прежде чем вы сможете ответить, что заставит его работать быстрее, вы должны найти узкое место.

Я не очень знаком с Windows, но есть какой-то виджет мониторинга загрузки системы, IIRC.

Я бы сделал следующее:

  • Создание наборов данных увеличивающихся размеров (больше документов)
  • Запустите вашу программу для этих наборов данных
  • При каждом запуске работайте, если процессор исчерпан, или память исчерпана и начинает обмениваться, или если все это связано с IO

Затем исправьте тот, который вызывает проблему.

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

...