Пробовал это, но это было намного медленнее, чем сортировка Unix, даже при вызове из консоли (1 минута 30 секунд)

я есть Java-программа, которая использует ProcessBuilder для вызова команды сортировки Unix. Когда я запускаю этот код в своей среде IDE (intelliJ), для сортировки 500 000 строк требуется всего около секунды. Когда я упаковываю его в исполняемый файл jar и запускаю его из терминала, это занимает около 10 секунд. Когда я сам запускаю команду сортировки из терминала, это занимает 20 секунд!

Почему огромная разница в производительности и как я могу заставить jar работать с той же производительностью? Средой является OSX 10.6.8 и Java 1.6.0_26. В нижней части справочной страницы сортировки написано "сортировка 5.93 Ноябрь 2004"

Команда, которую она выполняет:

sort -t'    ' -k5,5f -k4,4f -k1,1n /path/to/imput/file -o /path/to/output/file

Обратите внимание, что когда я запускаю сортировку из терминала, мне нужно вручную экранировать символ табуляции и использовать аргумент-t$'\t' вместо фактической вкладки (которую я могу передать ProcessBuilder).

Выглядит какps все выглядит так же, за исключением того, что при запуске из IDE команда сортировки имеет TTY ?? вместо ttys000 - но изэтот вопрос Я не думаю, что это должно иметь значение. Возможно, BASH замедляет меня? У меня заканчиваются идеи и я хочу сократить этот 20-кратный разрыв в производительности!