comando de classificação @Unix leva muito mais tempo, dependendo de onde é executado ?! (o mais rápido do ProcessBuilder no programa é executado a partir do IDE, o mais lento é o terminal)

Eu tenho um programa java que usa ProcessBuilder para chamar o comando de classificação unix. Quando executo esse código no meu IDE (intelliJ), leva apenas um segundo para classificar 500.000 linhas. Quando empacotá-lo em um jar executável e executá-lo no terminal, leva cerca de 10 segundos. Quando executo o comando de classificação no terminal, leva 20 segundos!

Por que a grande diferença de desempenho e de que maneira posso executar o jar com o mesmo desempenho? O ambiente é OSX 10.6.8 e java 1.6.0_26. A parte inferior da página do manual de classificação diz "sort 5.93 November 2004"

O comando que está executando é:

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

Observe que, quando executo a classificação no terminal, preciso escapar manualmente do delimitador de tabulação e usar o argumento-t$'\t' em vez da guia real (que eu posso passar para o ProcessBuilder

Looking asps tudo parece o mesmo, exceto quando executado no IDE, o comando de classificação possui um TTY de ?? em vez de ttys000 - mas a partir deessa questã Eu não acho que isso faça diferença. Talvez o BASH esteja me atrasando? Estou ficando sem ideias e quero fechar essa lacuna de desempenho 20x!

questionAnswers(2)

yourAnswerToTheQuestion