Eu estava afim de testar a performance do Java 6 contra C, então baixei as fontes do http://math.nist.gov/scimark2/faq.html, tanto da versão em Java tanto da versão em C, compilei e rodei.
Obs.: Eu não me preocupei em fazer otimizações e também estou ciente que este é um teste sintético, que não avalia corretamente a performance para aplicações normais.
Me surpreendi com os resultado! Olhem vocês mesmos:
C sem otimizações:
Composite Score: ==> 143.36 <==
FFT Mflops: 103.82 (N=1024)
SOR Mflops: 279.27 (100 x 100)
MonteCarlo: Mflops: 44.15
Sparse matmult Mflops: 127.01 (N=1000, nz=5000)
LU Mflops: 162.54 (M=100, N=100)
C com otimizações “-02”
Composite Score: ==> 449.46 <==
FFT Mflops: 492.72 (N=1024)
SOR Mflops: 441.96 (100 x 100)
MonteCarlo: Mflops: 78.95
Sparse matmult Mflops: 416.10 (N=1000, nz=5000)
LU Mflops: 817.56 (M=100, N=100)
Versão em Java (HotSpot 6):
Composite Score: ==> 312 <==
FFT (1024): 268
SOR (100×100): 432
Monte Carlo : 61
Sparse matmult (N=1000, nz=5000): 372
LU (100×100): 425
Essa pontuação é expressa em MFlops, ou seja,quanto maior, melhor.
Percebe-se que o Java se aproxima muito da performance do código otimizado em C. Eu estava esperando que o Java fosse cerca de umas 3 ou 4 vezes mais lento, mas me surpreendi. Acredito que se foram os tempos em que Java era lento.