ich wundere mich gerade etwas über die geschwindigkeit vom ASM Befehl fyl2x.
Wenn ich diesen für die Log2() Procedure nutzt (Quelle), ist diese Prozedur langsammer als das Log oder Log10 von PureBasic, obwohl diese ja wohl auch den Basisbefehl fyl2x nutzen und sogar mehrmals, oder?
Code: Alles auswählen
Procedure.d Log2(x.d)
!fld1
!fld qword [p.v_x]
!fyl2x
ProcedureReturn
EndProcedure
Define Time.i, Time2.i, Time10.i, TimeE.i, I.i
#Loops = 10000000
Time = ElapsedMilliseconds()
For I = 1 To #Loops
Log2(I)
Next
Time2 = ElapsedMilliseconds() - Time
Time = ElapsedMilliseconds()
For I = 1 To #Loops
Log10(I)
Next
Time10 = ElapsedMilliseconds() - Time
Time = ElapsedMilliseconds()
For I = 1 To #Loops
Log(I)
Next
TimeE = ElapsedMilliseconds() - Time
MessageRequester("", "Log2() --> "+StrD(1.e6*Time2/#Loops)+"ns"+#LF$+"Log10() --> "+StrD(1.e6*Time10/#Loops)+"ns"+#LF$+"Log() --> "+StrD(1.e6*TimeE/#Loops)+"ns")
---------------------------
---------------------------
Log2() --> 49.9ns
Log10() --> 39.6ns
Log() --> 36.7ns
---------------------------
OK
---------------------------