Uma duvida.
Tenho um programinha java que faz a leitura de um arquivo grandão (+/- 700 MB) e transforma em varios pequenos
Acontece que ele foi compilado na versão 1.4 no Windows, porém, esta sendo executado em um servidor UNIX com 4 processadores.
A grande questão aqui é que no Windows (desktop!) o processamento é mais rápido do que no UNIX!! E a monitoracao me disse que é usado somente 1 processador. Curioso né?
Será que preciso compilar este programa num JDK no Unix?!?
Se seu programa não usa threads, vai usar apenas um processador*.
Estou simplificando um pouco, porque o Garbage Collector e o Just-In-Time Compiler rodam em threads separadas, e podem vir a usar os outros processadores, assim como o sistema operacional, que vai efetuar a leitura e gravação.
O computador pode ter 300 processadores, se vc não criar threads, o processo só irá consumir somente um.
O bytecode gerado no Windows não deverá ter diferença do gerado no Unix.
Se sua aplicação utilizar recursos visuais, isto pode afetar o desempenho. Servidores normalmente são
projetados para dispensar mais recursos em processos que rodam em background, como banco
de dados e outras aplicações. Já vi Word rodar mais rápido num XP que em máquina mais potente utilizando
Windows Server, mas quando o assunto era banco de dados, a diferença era gritante. Se sua aplicação utilizar
recurso visual, tente fazer um teste utilizando somente classes não visuais do Java.