Почему при построении из Eclipse Java-программа работает медленнее, чем из командной строки? - PullRequest
8 голосов
/ 16 ноября 2011

Я сделал несколько простых вызовов функций и строковых операций в цикле, Java-программа работает намного быстрее в командной строке, чем запуск (Run as ...) из eclipse ...

Было напечатано 6 строк вывода, каждая строка составляет около 120 символов. каждая строка представляет собой результат в диапазоне от 50 мс до 300 мс.

Общее время составляет чуть более 2 секунд.

«гораздо медленнее» здесь означает, что для определенных операций (вызова функции) я вижу 20 мс против 300 мс.

После однократного запуска на консоли скорость затмения возрастает!

После того, как я изменю и соберу код в Eclipse, скорость CL снизится, если я не перестрою его с помощью командной строки.

Похоже, что некоторая информация о горячих точках генерируется только с CL ...

Ответы [ 4 ]

1 голос
/ 25 ноября 2011

Может быть, это просто консоль eclipse, которая медленнее, чем консоль вашей операционной системы? Кроме того, при общей продолжительности выполнения ~ 2 секунды ваш эталонный тест, вероятно, будет просто неточным.

0 голосов
/ 05 декабря 2011

Я согласен с другими комментариями, что Eclipse что-то делает при запуске приложения и печати консоли.

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

Эти два компилятора служат разным целям, JDT в основном позволяет Eclipse обеспечивать современный рефакторинг и автозаполнение, а javac тратит много усилий на оптимизацию.

0 голосов
/ 21 ноября 2011

Скорее всего, виновником является использование памяти в результате загрузки Eclipse, с возможностью того, что Eclipse также делает что-то дополнительное к исполняемому файлу, например, подкачку загрузчиков классов или запуск отладчика java.

Я бы сказал, что наиболее вероятный ответ прост: Eclipse использует много ресурсов, особенно память, и немного истощает систему, что приводит к перестановке и снижению производительности. YMMV, и нет никакой гарантии, что я прав, не видя твою систему, это только мое лучшее предположение.

0 голосов
/ 21 ноября 2011

Я бы сказал, понятно, что приложение будет работать медленнее со всем багажом Eclipse под ним.Eclipse порождает процесс JVM в детстве, и я уверен, что он по-прежнему творит свое «волшебство».

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