Utilizzo di una variabile per definire i limiti del contatore in un ciclo FOR ... NEXT

-2

Sto usando Excel VBA per manipolare un array monodimensionale con circa 100.000 elementi numerici.

Sto riscontrando enormi differenze nelle prestazioni tra i seguenti 2 metodi:

metodo (1)

k1 = 10
for i=k1 to 100000
Element{i} = some function of Element{i-1}
next i

AND method (2)

for i=10 to 100000
Element{i} = some function of Element{i-1}
next i

Nel mio caso, il metodo (2) viene eseguito nel 10% del tempo del metodo (1).

L'array Element {} è stato definito dinamicamente e ReDim alle dimensioni effettive.

C'è qualche ovvia ragione per la differenza?

Molte grazie, James

    
posta Jamesh99 17.07.2016 - 16:01
fonte

1 risposta

1

Il tuo primo snippet di codice assegna in modo efficace k1 a i e poi controlla i contro il caso di uscita. Questo viene fatto ogni iterazione ed è il motivo per cui è più lento del secondo snippet

Modifica

Un'eventuale soluzione alternativa in pseudocodice per avere un'iterazione efficiente e ancora non fare affidamento sulla codifica hard del valore di i

var i = k1;
for i to 100000
    //iterate
next i
    
risposta data 17.07.2016 - 17:07
fonte

Leggi altre domande sui tag