Java: perché questo For-Loop è più lento di migliaia di volte?

-10

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?

    
posta thebest108 21.03.2016 - 04:19
fonte

1 risposta

6

La tua seconda versione sembra un tentativo di espandere un ciclo for , ma sfortunatamente è completamente impreciso. Il risultato è che si tratta di "lo stesso risultato esatto" che potrebbe essere.

Esegue solo una una iterazione a prescindere dalle variabili di input, sebbene all'interno di tale iterazione si esegua il "corpo del loop" più volte in luoghi dispari.

Raccomando di rivedere ciò che fa un for loop.

    
risposta data 21.03.2016 - 05:23
fonte

Leggi altre domande sui tag