Seite 1 von 2

Geschwindigkeitstest von ASM-Optimierungen

Verfasst: 20.11.2005 13:33
von Deeem2031
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:

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))
Test2:

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))
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

Verfasst: 20.11.2005 13:43
von SoS
CPU: P4 2.6 Ghz mit HT

Optimierer: keine

Test 1: 1172 781

Test 2: 1578 1563

Verfasst: 20.11.2005 13:43
von Hellhound66
Erster Test : 2133 1693
Zweiter Test: 1953 2033


System:
Pentium M 745 (1.8GHz, 400MHz FSB, 2MB L2 Cache)
512 MB DDR
WIN XP SP2
Keine Optimierer.

Verfasst: 20.11.2005 13:49
von MVXA
Erster Test: 20969 20906
Zweiter Test: 21266 21875
System: profil
keine optimierung.

Verfasst: 20.11.2005 13:58
von Hellhound66
Krasse Unterschiede :?

Verfasst: 20.11.2005 15:48
von NicTheQuick
Optimierer: keiner
Test 1a: 2053 1742
Test 1b: 2013 1713
Test 2a: 2163 2133
Test 2b: 2123 2103
System: Profil

Verfasst: 20.11.2005 16:41
von Nero
Mit DB
T1: 14016 14516
T2: 14266 14031

[Edit]

Ups hatte vergessen den Debuger auszumachen

Ohne DB
T1: 1219 1000
T2: 1219 1219

System: Profil
Opti: keiner

Verfasst: 20.11.2005 17:08
von edel
; beide optimizer
1203 1391
1140 1047

;mit deeems optimizer
1203 1406
1156 1063

;mit remis optimizer
953 1250
1172 1187

; ohne optimizer
1031 1359
1187 1188

Processor: AMD Athlon(tm) XP 3000+, MMX, 3DNow, ~2.2GHz
Memory: 1024MB RAM

Verfasst: 20.11.2005 22:35
von Laurin
Optimierer: nix

Debugger: ein
Test 1: 11469 11969
Test 2: 11704 13406

Debugger: aus
Test 1: 1406 1536
Test 2: 1328 1406

Rechner: siehe Profil


Ähm, warum dauert denn das bei mir so lange? Bei anderen scheint es ja nicht so lange zu dauern.

Edit:
Ah, danke Hallodri. Den Debugger hatte ich tatsächlich an.

Verfasst: 20.11.2005 22:39
von edel
Deine Werte erreiche ich auch mit Debugger.