Quindi ho un metodo semplice che sto chiamando milioni di volte al secondo, e ho notato che stava prendendo il 16% di tutto il tempo di elaborazione !!
La routine offensiva è la seguente:
public void placeHolder(){
for (i2 = mnY; i2 < mxY; i2++){
runInternalLoop();
}
}
Entrando in un self-time di 27015 ms, o 14,5% (Escludendo ulteriori chiamate di metodo)
Inorridito, sono passato a questo:
public void placeHolder(){
i2 = mnY;
runInternalLoop();
i2++;
runInternalLoop();
if(i2<mxY){
i2++;
runInternalLoop();
}
}
Ora il tempo di auto è 0ms! Letteralmente dal 15% dell'esecuzione a zero, per lo stesso risultato esatto.
Qual è la causa di questa follia?