...
heu!! je veux pas chercher la polémique mais ils me parrait tres compliqué
d'usée de peek et poke pour faire un echange de variable !!
esce vraiment plus rapide que d'utiliser 3 variables
ou meme de 2 variables pour les contenus numerique ???
ha moins que le but soit le chalenge intellectuel , dans ce cas je comprend !

d'usée de peek et poke pour faire un echange de variable !!
esce vraiment plus rapide que d'utiliser 3 variables
ou meme de 2 variables pour les contenus numerique ???
ha moins que le but soit le chalenge intellectuel , dans ce cas je comprend !

Dobro,
Les Peek / Poke coûtent + cher que le passage par des variables oui ... à ma connaissance.
Voici la preuve ?!
Les Peek / Poke coûtent + cher que le passage par des variables oui ... à ma connaissance.
Voici la preuve ?!
Code : Tout sélectionner
Procedure SwapB(a.l, b.l) ; de Dr Dri
c.b
c = PeekB(a)
PokeB(a, PeekB(b))
PokeB(b, c)
EndProcedure
Procedure Swap(*a, *b) ; Pour bien comprendre
a = PeekL(*a)
b = PeekL(*b)
PokeL(*a, b)
PokeL(*b, a)
EndProcedure
Procedure MySwapL(*a, *b) ; Et voilà ce que je fais MOOOOA ! Toujours le principe d'évitement des Peek / Poke
! MOV eax,dword [esp] ; eax = *a
! MOV ecx,[eax] ; ecx = a
! MOV ebx,dword [esp+4] ; ebx = *b
! MOV edx,[ebx] ; edx = b
! MOV [eax], edx ; *a = b
! MOV [ebx], ecx ; *b = a
EndProcedure
Count = 2500000 ; Je fixe Count à "l'infini", valeur assez grande pour faire un bon test et paire, comme ça la dernière itération devrait donner pour résultat deux valeurs permutées
OpenConsole()
tz = ElapsedMilliseconds() : a = 13 : b = 12 : For i = 1 To Count : SwapB(@a, @b) : Next : PrintN(Str(ElapsedMilliseconds() - tz) + " " + Str(a) + " " + Str(b))
tz = ElapsedMilliseconds() : a = 13 : b = 12 : For i = 1 To Count : Swap(@a, @b) : Next : PrintN(Str(ElapsedMilliseconds() - tz) + " " + Str(a) + " " + Str(b))
tz = ElapsedMilliseconds() : a = 13 : b = 12 : For i = 1 To Count : MySwapL(@a, @b) : Next : PrintN(Str(ElapsedMilliseconds() - tz) + " " + Str(a) + " " + Str(b))
While Inkey() = "" : Wend
CloseConsole()
End
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.