Per quanto riguarda le prestazioni, è preferibile accedere a un elemento di matrice 'direttamente' più volte o assegnare il suo valore a una variabile e utilizzare tale variabile? Supponendo che farò riferimento al valore più volte nel seguente codice.Accesso diretto a un elemento di matrice direttamente rispetto all'assegnazione a una variabile
Il ragionamento alla base di questa domanda è che l'accesso a un elemento di matrice comporta presumibilmente alcuni costi di elaborazione ogni volta che viene eseguito, senza richiedere spazio aggiuntivo. D'altra parte, la memorizzazione del valore in una variabile elimina questo costo di accesso, ma occupa uno spazio aggiuntivo.
// use a variable to store the value
Temp = ArrayOfValues(0)
If Temp > 100 Or Temp < 50 Then
Dim Blah = Temp
...
// reference the array element 'directly'
If ArrayOfValues(0) > 100 Or ArrayOfValues(0) < 50 Then
Dim Blah = ArrayOfValues(0)
...
So che questo è un esempio banale, ma assumendo stiamo parlando di una scala più grande in uso effettivo (dove il valore si farà riferimento molte volte) A che punto è il compromesso tra lo spazio e il tempo vale la pena di calcolo considerando (se non del tutto)?
Un compilatore di ottimizzazione sta per rendere questo assolutamente discutibile per gli HLL. Se si utilizza l'assembly o si disattivano le ottimizzazioni, i registri sono più veloci della cache, quindi è necessario caricare i valori utilizzati di frequente nei registri il più possibile. In generale, penso che il punto critico tra la pressione del registro e la gerarchia della memoria sia probabilmente una questione empirica. – Patrick87