Geschwindigkeit von Pow
Re: Geschwindigkeit von Pow
Mit SSE wäre SdP ohne Pow() vermutlich sogar doppelt so schnell
Re: Geschwindigkeit von Pow
Bei solchen Geschwindigkeitstests sollte man auch unbedingt auf den Zeitverbrauch der Schleife selbst achten, sowie die CPU Temperatur.
Zumindest bei mir ist das erste Beispiel "distance = Abs(x0-x1)+Abs(y0-y1)" fast genauso schnell, wie wenn ich diese Zeile auskommentiere und nur die Schleife läuft.
PS: mit SSE ist es nicht schneller:
Zumindest bei mir ist das erste Beispiel "distance = Abs(x0-x1)+Abs(y0-y1)" fast genauso schnell, wie wenn ich diese Zeile auskommentiere und nur die Schleife läuft.
PS: mit SSE ist es nicht schneller:
Code: Alles auswählen
EnableExplicit
Define.d x0,y0,x1,y1
Define distance.d
Define i
Define timer
x0 = 2
y0 = 2
x1 = 7
y1 = 8
OpenConsole("")
timer = ElapsedMilliseconds()
For i = 1 To 100000000
! MOVLPD xmm0, [v_x0]
! MOVHPD xmm0, [v_y0]
! MOVLPD xmm1, [v_x1]
! MOVHPD xmm1, [v_y1]
! SUBPD xmm0, xmm1
! MULPD xmm0, xmm0
! HADDPD xmm0, xmm1
! SQRTSD xmm0, xmm0
! MOVSD [v_distance], xmm0
Next
PrintN("Schätzung: "+distance)
PrintN("Millisecs: "+Str(ElapsedMilliseconds()-timer))
PrintN("")
timer = ElapsedMilliseconds()
For i = 1 To 100000000
distance = Sqr(((x0-x1)*(x0-x1))+((y0-y1)*(y0-y1)))
Next
PrintN("ohne Pow(): "+distance)
PrintN("Millisecs: "+Str(ElapsedMilliseconds()-timer))
PrintN("")
PrintN("Press ENTER") : Input()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Geschwindigkeit von Pow
Vielleicht ist es langsamer wegen den Doubles ?STARGÅTE hat geschrieben:Bei solchen Geschwindigkeitstests sollte man auch unbedingt auf den Zeitverbrauch der Schleife selbst achten, sowie die CPU Temperatur.
Zumindest bei mir ist das erste Beispiel "distance = Abs(x0-x1)+Abs(y0-y1)" fast genauso schnell, wie wenn ich diese Zeile auskommentiere und nur die Schleife läuft.
PS: mit SSE ist es nicht schneller:
...
Wenn ich Floats verwende ist SSE eindeutig schneller.
Code: Alles auswählen
PB1_mit_Pow(): 568.9664306641
Millisecs: 14305
PB2_ohne_Pow(): 568.9664306641
Millisecs: 600
PB3_Abs(): 624.0239868164
Millisecs: 287
SSE (Float): 568.9664306641
Millisecs: 272
SSE_Stargate (Double): 568.9664177928
Millisecs: 1101
Press ENTER