Publié : ven. 04/févr./2005 23:53
Moi aussi j'ai fait l'exercice 
Avec un test de vitesse entre pointeur et ASM ...

Avec un test de vitesse entre pointeur et ASM ...
Code : Tout sélectionner
chaine.s="Pure Basic is the Best"
chaine1.s=Space(Len(chaine))
Longueur = Len(chaine)
;/ Avec pointeur
Time1 = GetTickCount_()
For t=1 To 1000000
*PtrChaine.BYTE = @chaine + Longueur -1
*PtrChaine1.BYTE = @chaine1
For p=0 To Longueur
*PtrChaine1\b = *PtrChaine\b
*PtrChaine1 + 1
*PtrChaine - 1
Next
*PtrChaine1\b = 0
Next
;Debug chaine1
Time2 = GetTickCount_()
;/ Avec registre ASM
For t=1 To 1000000
!MOV ecx,dword [v_Longueur]
!MOV edx,dword [v_chaine]
!ADD edx,ecx
!DEC edx
!MOV ebx,dword[v_chaine1]
!Encore:
!MOV al,byte[edx]
!MOV byte[ebx],al
!DEC edx
!INC ebx
!DEC ecx
!JNZ Encore
!MOV byte[ebx],0
Next
;Debug chaine1
Time3 = GetTickCount_()
;/ Resultat
Message$ = "Avec pointeur : "+Str(Time2-Time1)+" ms"+Chr(13)
Message$ + "Avec registre ASM : "+Str(Time3-Time2)+" ms"
MessageRequester("Test de vitesse",Message$,#PB_MessageRequester_Ok)