Geschwindigkeitstest von ASM-Optimierungen
Verfasst: 20.11.2005 13:33
Da ich noch weiter nach Optimierungen für meinen Optimierer suche und ich gestern einen Tip bekommen habe, habe ich diesen auch genauer untersucht. Nur war das Ergebnis leider nicht sehr eindeutig. Soll heißen bei mir entsprach alles den Erwartungen, bei einem Freund trat aber genau das Gegenteil ein und unter bestimmten Umständen wars dann wieder ganz anders. Desswegen würde ich gerne zu ein paar mehr Ergebnisse kommen um dann einschätzen zu können ob es sinnvoll ist die Optimierungen einzubauen.
Test1:
Test2:
Interessant wäre dabei: CPU, Optimierer (wenn ja welche) und die Zeit natürlich
Meine Ergebnisse:
-AMD Athlon XP 2000+
-meinen und Remis Optimierer
-Test1: 1600 1750
-Test2: 1765 1328
Test1:
Code: Alles auswählen
SetThreadPriority_(GetCurrentThread_(),#THREAD_PRIORITY_TIME_CRITICAL)
#r = 500000000
Time0 = ElapsedMilliseconds()
For i = 0 To #r-1
!XOR EAX, EAX
!MOV AL, 3
!MOV EBX, EAX
Next
Time0 = ElapsedMilliseconds() - Time0
Time1 = ElapsedMilliseconds()
For i = 0 To #r-1
!MOV AL, 3
!MOV EBX, EAX
Next
Time1 = ElapsedMilliseconds() - Time1
MessageRequester("",Str(time0)+" "+Str(time1))
Code: Alles auswählen
tmp1 = 0
tmp2 = 0
tmp3 = 0
SetThreadPriority_(GetCurrentThread_(),#THREAD_PRIORITY_TIME_CRITICAL)
#r = 500000000
Time0 = ElapsedMilliseconds()
For i = 0 To #r-1
!MOV EBX, [v_tmp1] ; 1 uop (D0)
!INC EBX ; 1 uop (D1)
!ADD EAX, [v_tmp2] ; 2 uops (D0)
!ADD [v_tmp3], EAX ; 4 uops (D0)
Next
Time0 = ElapsedMilliseconds() - Time0
Time1 = ElapsedMilliseconds()
For i = 0 To #r-1
!ADD EAX, [v_tmp2] ; 2 uops (D0)
!MOV EBX, [v_tmp1] ; 1 uop (D1)
!INC EBX ; 1 uop (D2)
!ADD [v_tmp3], EAX ; 4 uops (D0)
Next
Time1 = ElapsedMilliseconds() - Time1
MessageRequester("",Str(time0)+" "+Str(time1))
Meine Ergebnisse:
-AMD Athlon XP 2000+
-meinen und Remis Optimierer
-Test1: 1600 1750
-Test2: 1765 1328