La Java VM è molto lenta. Molto lenta. Mooooooooolto lenta.
Sono venuto così a contatto con gcj ovvero gcc per Java. Questo compilatore produce un file eseguibile esattamente come per C/C++.
A questo punto viene spontaneo fare un piccolo test di performance. Premetto che il test proposto non ha valenza assoluta.
Compiliamo questa classe.
public class MiaClass
{
public MiaClass()
{
}
public void print()
{
long startTime = System.currentTimeMillis();
callOperationToTime();
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println("Time: " + totalTime);
}
private void callOperationToTime()
{
for(int i = 0; i < 10000; i++)
{
System.out.println(" ");
}
}
}
e successivamente richiamiamola da un semplice "main".
public class HelloWorld {
public static void main(String[] args) {
MiaClass c = new MiaClass();
c.print();
}
}
Questo codice compilato con gcj esegue le operazioni in 75ms mentre lanciato con la Java VM i millisecondi salgono a 291.
La mia macchina è un P8400 e Ubuntu 10.04.