, у меня есть java-программа, которая использует ProcessBuilder для вызова команды сортировки unix. Когда я запускаю этот код в своей IDE (intelliJ), сортировка 500 000 строк занимает около секунды. Когда я упаковываю его в исполняемую банку и запускаю с терминала, это занимает около 10 секунд. Когда я сам запускаю команду sort с терминала, это занимает 20 секунд!
Почему такая огромная разница в производительности и каким образом я могу заставить jar-файл работать с той же производительностью? Среда - OSX 10.6.8 и java 1.6.0_26. Внизу страницы руководства по сортировке написано «sort 5.93 November 2004»
Выполняемая команда:
sort -t' ' -k5,5f -k4,4f -k1,1n /path/to/imput/file -o /path/to/output/file
Обратите внимание, что когда я запускаю sort с терминала, мне нужно вручную избежать разделителя табуляции и использовать аргумент -t $ '\ t'
вместо фактической вкладки (которую я могу передать в ProcessBuilder).
В виде ps
все выглядит так же, за исключением того, что при запуске из IDE команда сортировки имеет телетайп ?? вместо ttys000 - но из этого вопроса я не думаю, что это должно иметь значение. Может, BASH меня тормозит? У меня заканчиваются идеи, и я хочу сократить этот 20-кратный разрыв в производительности!