Le premier est classique (deux boucles imbriquées), le deuxième utilise un pointeur.
Je suis surpris de constater que le deuxième prend plus de temps que le premier!
Pourtant, le nombre d’opérations dans la boucle est moindre.
En effet, dans le programme n°1, l’adresse mémoire est recalculée à chaque itération en fonction de la valeur de i et j,
alors que dans le deuxième, on ne fait qu’incrémenter un pointeur… sans compter qu’il n’y a qu’une seule boucle…
Quelqu’un a t’il une explication ?
#size = 1000
Dim table.l( #size , #size )
Time = GetTickCount_()
For i=0 To #size
For j = 0 To #size
table(i,j)=1000;Random(300)
Next
Next
Debug GetTickCount_()-Time
Time = GetTickCount_()
*pt.LONG = @table()
For k=1 To ( #size+1 )*( #size+1 )
*pt\l = 2000;Random(300)
*pt + SizeOf(LONG)
Next
Debug GetTickCount_()-Time