Сравнение производительности Java-программы между Linux и Windows - PullRequest
1 голос
/ 05 февраля 2012

Я выполнил часть кода Java (измеряя время, затраченное на анализ и проверку XML-файлов с помощью схемы) в Windows 7 и Linux (Debian). Теперь, как и должно быть, время, затрачиваемое на платформу Linux, должно быть очень меньше по сравнению с платформой Windows. Но пользовательское время, записанное в обоих случаях, одинаково.

Я поправился, потому что я также запустил простую Java-программу для тестирования производительности (которая использовала два вложенных цикла, выполняющихся около 900000 раз) на обеих платформах. А пользовательское время, затрачиваемое на платформу Linux, примерно в 60 раз больше, чем на Windows.

Я должен также упомянуть, что я использую thaiopensource API в программе Java. (проект Цзин / Транг). Моя система использует 32-битный Linux (Debian) (Java также 32-битный) и имеет 3 ГБ ОЗУ. В Linux я использую openJDK 1.5 с виртуальной машиной IcedTea. Моя IDE для Windows - Eclipse Helios.

Пожалуйста, предложите мне, если есть какой-то способ обойти это, то есть время, необходимое для выполнения программы синтаксического анализа и проверки в Linux, должно быть меньше w.r.t. Окна. Но это не так. Пожалуйста, предложите способ. Спасибо.

Ответы [ 2 ]

7 голосов
/ 05 февраля 2012

Для достоверного сравнения необходимо минимизировать различия между тестами. то есть вы должны использовать ту же версию Java (в идеале самую последнюю или, по крайней мере, текущую). Если вы не выполняете системные вызовы, используемая ОС не имеет значения, скорее всего, это будет что-то другое.

Я бы предложил вам использовать последнюю версию Java 7 на обеих машинах с опцией -server. (32-разрядная версия Windows по умолчанию - клиентская JVM, которая отличается)

Я бы также позаботился о том, чтобы ваш тест выполнялся не менее 10 секунд, чтобы обеспечить полноценное сравнение.

Кстати: нет особой причины, по которой Linux должен работать быстрее, если вы используете то же оборудование.

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

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

Для начала я бы порекомендовал прочитать серию Надежный Java-бенчмаркинг на IBM Developer Works:

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

Также посмотрите на сайт Брента Бойера для получения дополнительной информации (и для загрузкибиблиотека, которую вы можете использовать для бенчмаркинга).

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