У меня есть Java-программа, которая считывает множество входных данных из базы данных, обрабатывает ее, а затем записывает данные обратно в другую базу данных (используя драйверы ODBC, базы данных Excel и доступа на новую машину Windows 7). Программе требуется около 17 минут для запуска из eclipse, но когда я создал исполняемый файл .jar, для запуска требуется еще 10 минут (всего 27).Почему мой .jar-файл работает медленнее, чем программа в eclipse?
Две причины, которые я нашел до сих пор для медленных файлов jar (путем поиска SO и google), это то, что они сжаты и что требуется много времени для записи в командную строку (или журнал ошибок), чем консоль в затмении. Я попытался создать несжатый файл jar, и он ускорялся примерно на 10 секунд (что могло быть совершенно случайным, так как время запуска варьируется примерно на 30 секунд). У меня есть только около 10 System.out.println()
команд в программе, так что это не должно сильно замедлять ее.
Любые идеи относительно того, что заставляет его работать намного медленнее, и если есть какой-либо способ, я могу ускорить его снова? Сообщите мне, есть ли какие-либо другие детали, которые могут иметь значение, которые я должен включить. Благодаря!
Вы пытались полностью удалить все команды System.out.println()? Печать на консоль съедает большую скорость. –
Я предлагаю использовать логгер или библиотеку log4j для печати сообщений журнала, и вы можете использовать отметку времени, чтобы узнать, какая часть вашего кода создает узкое место. Это не конкретное решение, но оно должно помочь сузить проблему. – user845279
Согласен с @Lai Xin Chu. Но если удалить все распечатки, просто запустите свою программу и перенаправьте STDOUT в файл. Я не верю, что консоль Eclipse может работать медленнее, чем оболочка. – AlexR