Code archives/Miscellaneous/Blitz3D commands benchmark

This code has been declared by its author to be Public Domain code.

Download source code

Blitz3D commands benchmark by Matt Merkulov2007
Article: Command speed in Blitz3D (rus)
;Blitz3D commands benchmark by Matt Merkulov

;See results in generated "btable.htm"

Type T
 Field i,f#,s$
End Type

Const tq=91, cq=100000, times=10, symq=20
Const dtim#=1000000.0/cq

Dim ns#(tq)
Dim name$(tq)
Dim tms(tq)

Dim im(symq)
Dim fm#(symq)
Dim sm$(symq)
Dim typ.T(cq)

SeedRnd MilliSecs()

For n=1 To tq
 Read name$(n)
Next

For n=1 To times*tq
 Repeat
  num=Rand(1,tq)
 Until tms(num)<times
 tms(num)=tms(num)+1
 ns#(num)=ns#(num)+dtim#*benchmark(name$(num))
Next

n=1
f=WriteFile("btable.htm")
WriteLine f,"<HTML><BODY><TABLE>"
m$="<TR>"
While n<=tq
 If x=900 Or n=2 Then
  x=0
  y=y+12
    WriteLine f,m$
    m$="</TR><TR>"
 End If 
 v#=ns#(n)/times
 m$=m$+"<TD>"+name$(n)+": "+v#+" ns</TD>"
 x=x+300
 n=n+1
Wend
WriteLine f,m$+"</TR></TABLE></BODY></HTML>"
CloseFile f
ExecFile "btable.htm"

Data "template"
Data "A=B","D#=E#","I.T=J.T"
Data "A=B+C","D#=E#+F#","I.T=New T"
Data "A=B-C","D#=E#-F#","Delete I.T"
Data "A=B*C","D#=E#*F#","I.T=Before J.T"
Data "A=B/C","D#=E#/F#","I.T=After J.T"
Data "A=B^P","D#=E#^F#","I.T=First T"
Data "A=Abs(B)","D#=Abs(E#)","I.T=Last T"
Data "A=Sgn(B)","D#=Sgn(E#)","Insert I.T Before J.T"
Data "A=Floor(E#)","D#=Sin(E#)","Insert I.T After J.T"
Data "A=Int(E#)","D#=Cos(E#)","For I.T=Each T"
Data "A=Ceil(E#)","D#=Tan(E#)","Delete Each T"
Data "A=B And C","D#=ASin(R#)","A=Handle(J.T)"
Data "A=B Or C","D#=ACos(R#)","I.T=Object(Handle)"
Data "A=B Xor C","D#=ATan(E#)","L$=M$"
Data "A=B Mod PP","D#=ATan2(E#,F#)","L$=M$+S$"
Data "A=B Shl PP","D#=Sqr(E#)","L$=Left$(M$,SQ)"
Data "A=B Sar PP","D#=Log(G#)","L$=Right$(M$,SQ)"
Data "A=Asc(S$)","D#=Log10(G#)","L$=Chr$(SYM)"
Data "A=Len(M$)","D#=Exp(O#)","L$=Mid$(M$,SPOS,SQ)"
Data "A=Instr(M$,S$)","","L$=String$(S$,SYMQ)"
Data "A=Rand()","D#=Rnd()","L$=Replace$(M$,S$,' ')"
Data "A=INTF(B)","D#=FLOATF#(E#)","L$=STRINGF$(M$)"
Data "A=im(spos)","D#=fm#(spos)","L$=sm$(spos)"
Data "A=J\i","D#=J\f#","L$=J\s$"
Data "PokeByte","PokeFloat","PokeInt"
Data "PeekByte","PeekFloat","PeekInt"
Data "A=D#","D#=S$","S$=A"
Data "D#=A","S$=D#","A=S$"
Data "IF B=C","IF E#=F#","IF I.T=J.T"
Data "IF B>C","IF E#>F#","IF M$=L$"


Function benchmark(name$)

If First t=Null Then
 For n=1 To cq
  I.T=New T
  typ(n)=I
 Next
End If

B=Rand(-2000000000,2000000000)
C=Rand(-2000000000,2000000000)
P=Rand(-20,20)
PP=Rand(1,20)
SYM=Rand(0,255)
E#=Rnd(-2000000000,2000000000)
F#=Rnd(-2000000000,2000000000)
G#=Rnd(2,2000000000)
O#=Rnd(-20,20)
R#=Rnd(-1,1)
I.T=typ(Rand(1,cq))
J.T=typ(Rand(2,cq-1))
If i=Null Or j=Null Then Stop
SPOS=Rand(1,SYMQ)
s$=Chr$(sym)
bnk=CreateBank(symq+4)
For n=1 To SYMQ
 L$=Chr$(Rand(0,255))
 If nn=SPOS Then S$=L$
 M$=M$+L$
Next

If name$="I.T=New T" Then Delete Each T

k=1
tim=MilliSecs()
Select name$
 Case "template":For n=1 To cq:A=B:Next
 Case "A=B":For n=1 To cq:A=B:A=C:Next
 Case "D#=E#":For n=1 To cq:A=B:D#=E#:Next
 Case "A=E#":For n=1 To cq:A=B:A=E#:Next
 Case "D#=B":For n=1 To cq:A=B:D#=B:Next
 Case "A=B+C":For n=1 To cq:A=B+C:Next
 Case "D#=E#+F#":For n=1 To cq:D#=E#+F#:Next
 Case "A=B-C":For n=1 To cq:A=B-C:Next
 Case "D#=E#-F#":For n=1 To cq:D#=E#-F#:Next
 Case "A=B*C":For n=1 To cq:A=B*C:Next
 Case "D#=E#*F#":For n=1 To cq:D#=E#*F#:Next
 Case "A=B/C":For n=1 To cq:A=B/C:Next
 Case "D#=E#/F#":For n=1 To cq:D#=E#/F#:Next
 Case "A=B^P":For n=1 To cq/10:A=B^P:Next:k=10
 Case "D#=E#^F#":For n=1 To cq/10:D#=E#^F#:Next:k=10
 Case "A=Floor(E#)":For n=1 To cq:A=Floor(E#):Next
 Case "A=Int(E#)":For n=1 To cq:A=Int(E#):Next
 Case "A=Ceil(E#)":For n=1 To cq:A=Ceil(E#):Next
 Case "A=Abs(B)":For n=1 To cq:A=Abs(B):Next
 Case "D#=Abs(E#)":For n=1 To cq:D#=Abs(E#):Next
 Case "A=Sgn(B)":For n=1 To cq:A=Sgn(B):Next
 Case "D#=Sgn(E#)":For n=1 To cq:D#=Sgn(E#):Next
 Case "A=B Mod PP":For n=1 To cq:A=B Mod PP:Next
 Case "A=B And C":For n=1 To cq:A=B And C:Next
 Case "A=B Or C":For n=1 To cq:A=B Or C:Next
 Case "A=B Xor C":For n=1 To cq:A=B Xor C:Next
 Case "A=B Shl PP":For n=1 To cq:A=B Shl PP:Next
 Case "A=B Sar PP":For n=1 To cq:A=B Sar PP:Next
 Case "D#=Sin(E#)":For n=1 To cq:D#=Sin(E#):Next
 Case "D#=Cos(E#)":For n=1 To cq:D#=Cos(E#):Next
 Case "D#=Tan(E#)":For n=1 To cq:D#=Tan(E#):Next
 Case "D#=ASin(R#)":For n=1 To cq:D#=ASin(R#):Next
 Case "D#=ACos(R#)":For n=1 To cq:D#=ACos(R#):Next
 Case "D#=ATan(E#)":For n=1 To cq:D#=ATan(E#):Next
 Case "D#=ATan2(E#,F#)":For n=1 To cq:D#=ATan2(E#,F#):Next
 Case "A=Rand()":For n=1 To cq:A=Rand(0):Next
 Case "D#=Rnd()":For n=1 To cq:D#=Rnd(0.0):Next
 Case "A=INTF(B)":For n=1 To cq:A=INTF(B):Next
 Case "D#=FLOATF#(E#)":For n=1 To cq:D#=FLOATF#(E#):Next
 Case "I.T=J.T":For n=1 To cq:I.T=J.T:Next
 Case "I.T=New T":For n=1 To cq:I.T=New T:Next
 Case "Delete I.T":For n=1 To cq:Delete typ(n):Next
 Case "I.T=Before J.T":For n=1 To cq:I.T=Before J.T:Next
 Case "I.T=After J.T":For n=1 To cq:I.T=After J.T:Next
 Case "I.T=First T":For n=1 To cq:I.T=First T:Next
 Case "I.T=Last T":For n=1 To cq:I.T=Last T:Next
 Case "Insert I.T Before J.T":For n=1 To cq:Insert I.T Before J.T:Next
 Case "Insert I.T After J.T":For n=1 To cq:Insert I.T After J.T:Next
 Case "For I.T=Each T":For I.T=Each T:Next
 Case "A=Handle(J.T)":For n=1 To cq:A=Handle(J.T):Next
 Case "I.T=Object(Handle)":For n=1 To cq:I.T=Object.T(Handle(J.T)):Next
 Case "Delete Each T":Delete Each T
 Case "L$=M$":For n=1 To cq/10:L$=M$:Next:k=10
 Case "L$=M$+S$":For n=1 To cq/10:L$=M$+S$:Next:k=10
 Case "L$=Mid$(M$,SPOS,SQ)":For n=1 To cq/10:L$=Mid$(M$,SPOS,SymQ):Next:k=10
 Case "D#=Sqr(E#)":For n=1 To cq:D#=Sqr(G#):Next
 Case "L$=Left$(M$,SQ)":For n=1 To cq/10:L$=Left$(M$,SymQ):Next:k=10
 Case "D#=Log(G#)":For n=1 To cq:D#=Log(G#):Next
 Case "L$=Right$(M$,SQ)":For n=1 To cq/10:L$=Right$(M$,SymQ):Next:k=10
 Case "A=Asc(S$)":For n=1 To cq:A=Asc(S$):Next
 Case "D#=Log10(G#)":For n=1 To cq:D#=Log10(G#):Next
 Case "L$=String$(S$,SYMQ)":For n=1 To cq/10:L$=String$(S$,SYMQ):Next:k=10
 Case "A=Len(M$)":For n=1 To cq/10:A=Len(M$):Next:k=10
 Case "D#=Exp(O#)":For n=1 To cq:D#=Exp(O#):Next
 Case "L$=Chr$(SYM)":For n=1 To cq/10:L$=Chr$(SYM):Next:k=10
 Case "A=Instr(M$,S$)":For n=1 To cq/10:A=Instr(M$,S$):Next:k=10
 Case "L$=Replace$(M$,S$,' ')":For n=1 To cq/10:L$=Replace$(M$,S$," "):Next:k=10
 Case "L$=STRINGF$(M$)":For n=1 To cq/10:L$=STRINGF$(M$):Next:k=10
 Case "PokeByte":For n=1 To cq:PokeByte(bnk,spos,sym):Next
 Case "PokeInt":For n=1 To cq:PokeInt(bnk,spos,a):Next
 Case "PokeFloat":For n=1 To cq:PokeFloat(bnk,spos,e#):Next
 Case "PeekByte":For n=1 To cq:a=PeekByte(bnk,spos):Next
 Case "PeekInt":For n=1 To cq:a=PeekInt(bnk,spos):Next
 Case "PeekFloat":For n=1 To cq:d#=PeekFloat(bnk,spos):Next
 Case "A=im(spos)":For n=1 To cq:a=im(spos):Next
 Case "D#=fm#(spos)":For n=1 To cq:d#=fm#(spos):Next
 Case "L$=sm$(spos)":For n=1 To cq:l$=sm$(spos):Next
 Case "A=J\i":For n=1 To cq:a=J\i:Next
 Case "D#=J\f#":For n=1 To cq:d#=J\f#:Next
 Case "L$=J\s$":For n=1 To cq:l$=J\s$:Next
 Case "A=D#":For n=1 To cq:A=D#:Next
 Case "D#=S$":For n=1 To cq:D#=S$:Next
 Case "S$=A":For n=1 To cq/10:S$=A:Next:k=10
 Case "D#=A":For n=1 To cq:D#=A:Next:k=10
 Case "S$=D#":For n=1 To cq/10:S$=D#:Next
 Case "A=S$":For n=1 To cq:A=S$:Next
 Case "IF B=C"
  For n=1 To cq
   If B=C Then
   End If
  Next
 Case "IF E#=F#"
  For n=1 To cq
   If E#=F# Then
   End If
  Next
 Case "IF I.T=J.T"
  For n=1 To cq
   If I.T=J.T Then
   End If
  Next
 Case "IF B>C"
  For n=1 To cq
   If B>C Then
   End If
  Next
 Case "IF E#>F#"
  For n=1 To cq
   If E#>F# Then
   End If
  Next
 Case "IF M$=L$"
  For n=1 To cq
   If M$=L$ Then
   End If
  Next
End Select
tim=MilliSecs()-tim

If name$="I.T=New T" Then
 i.t=First t
 For n=1 To cq
  typ(n)=i
  i=After i
 Next
End If

Return tim*k
End Function

Function INTF(N)
Return N
End Function

Function FLOATF#(N#)
Return N#
End Function

Function STRINGF$(S$)
Return S$
End Function

Comments

puki2007
This is most exciting.


Matt Merkulov2007
Thanks. I plan to make BlitzMax version too in future.


_332007
Yikes MID is really slow!!!


Matt Merkulov2007
Here is results for Celeron 4A 2.2GHz:
ns - nanoseconds = 1/1 000 000 000 sec

template: 1.9 ns
A=B: 2.8 ns
D#=E#: 3.0 ns
I.T=J.T: 10.7 ns
A=B+C: 2.9 ns
D#=E#+F#: 8.1 ns
I.T=New T: 86.5 ns
A=B-C: 2.9 ns
D#=E#-F#: 8.2 ns
Delete I.T: 83.2 ns
A=B*C: 2.9 ns
D#=E#*F#: 8.6 ns
I.T=Before J.T: 16.9 ns
A=B/C: 27.4 ns
D#=E#/F#: 11.8 ns
I.T=After J.T: 14.9 ns
A=B^P: 469.0 ns
D#=E#^F#: 1223.0 ns
I.T=First T: 16.2 ns
A=Abs(B): 6.1 ns
D#=Abs(E#): 9.3 ns
I.T=Last T: 16.1 ns
A=Sgn(B): 7.0 ns
D#=Sgn(E#): 11.3 ns
Insert I.T Before J.T: 13.4 ns
A=Floor(E#): 95.9 ns
D#=Sin(E#): 84.3 ns
Insert I.T After J.T: 13.6 ns
A=Int(E#): 6.7 ns
D#=Cos(E#): 94.5 ns
For I.T=Each T: 77.4 ns
A=Ceil(E#): 96.2 ns
D#=Tan(E#): 100.4 ns
Delete Each T: 74.6 ns
A=B And C: 2.7 ns
D#=ASin(R#): 260.2 ns
A=Handle(J.T): 19.0 ns
A=B Or C: 2.9 ns
D#=ACos(R#): 261.6 ns
I.T=Object(Handle): 45.5 ns
A=B Xor C: 2.4 ns
D#=ATan(E#): 116.0 ns
L$=M$: 184.0 ns
A=B Mod PP: 27.7 ns
D#=ATan2(E#,F#): 92.2 ns
L$=M$+S$: 732.0 ns
A=B Shl PP: 4.6 ns
D#=Sqr(E#): 11.0 ns
L$=Left$(M$,SQ): 256.0 ns
A=B Sar PP: 4.1 ns
D#=Log(G#): 49.8 ns
L$=Right$(M$,SQ): 262.0 ns
A=Asc(S$): 582.1 ns
D#=Log10(G#): 50.2 ns
L$=Chr$(SYM): 538.0 ns
A=Len(M$): 173.0 ns
D#=Exp(O#): 106.0 ns
L$=Mid$(M$,SPOS,SQ): 653.0 ns
A=Instr(M$,S$): 341.0 ns
: 0.0 ns
L$=String$(S$,SYMQ): 1530.0 ns
A=Rand(): 79.8 ns
D#=Rnd(): 45.7 ns
L$=Replace$(M$,S$,' '): 879.0 ns
A=INTF(B): 8.2 ns
D#=FLOATF#(E#): 12.5 ns
L$=STRINGF$(M$): 322.0 ns
A=im(spos): 4.4 ns
D#=fm#(spos): 3.1 ns
L$=sm$(spos): 141.0 ns
A=J\i: 2.6 ns
D#=J\f#: 3.0 ns
L$=J\s$: 140.1 ns
PokeByte: 10.1 ns
PokeFloat: 11.1 ns
PokeInt: 10.6 ns
PeekByte: 9.6 ns
PeekFloat: 11.4 ns
PeekInt: 9.6 ns
A=D#: 7.0 ns
D#=S$: 266.5 ns
S$=A: 669.0 ns
D#=A: 75.0 ns
S$=D#: 292.3 ns
A=S$: 176.5 ns
IF B=C: 2.7 ns
IF E#=F#: 8.1 ns
IF I.T=J.T: 9.7 ns
IF B>C: 3.0 ns
IF E#>F#: 8.0 ns
IF M$=L$: 337.4 ns


_332007
Opteron 165 @ 2.8ghz - 2GB DDR433


template: 1.0 ns
A=B: 1.0 ns
D#=E#: 5.0 ns
I.T=J.T: 6.0 ns
A=B+C: 2.0 ns
D#=E#+F#: 7.0 ns
I.T=New T: 44.0 ns
A=B-C: 2.0 ns
D#=E#-F#: 8.0 ns
Delete I.T: 43.0 ns
A=B*C: 3.0 ns
D#=E#*F#: 6.0 ns
I.T=Before J.T: 10.0 ns
A=B/C: 16.0 ns
D#=E#/F#: 8.0 ns
I.T=After J.T: 9.0 ns
A=B^P: 120.0 ns
D#=E#^F#: 250.0 ns
I.T=First T: 12.0 ns
A=Abs(B): 6.0 ns
D#=Abs(E#): 7.0 ns
I.T=Last T: 10.0 ns
A=Sgn(B): 5.0 ns
D#=Sgn(E#): 5.0 ns
Insert I.T Before J.T: 8.0 ns
A=Floor(E#): 54.0 ns
D#=Sin(E#): 40.0 ns
Insert I.T After J.T: 12.0 ns
A=Int(E#): 5.0 ns
D#=Cos(E#): 45.0 ns
For I.T=Each T: 20.0 ns
A=Ceil(E#): 55.0 ns
D#=Tan(E#): 56.0 ns
Delete Each T: 38.0 ns
A=B And C: 3.0 ns
D#=ASin(R#): 142.0 ns
A=Handle(J.T): 13.0 ns
A=B Or C: 6.0 ns
D#=ACos(R#): 147.0 ns
I.T=Object(Handle): 28.0 ns
A=B Xor C: 2.0 ns
D#=ATan(E#): 67.0 ns
L$=M$: 50.0 ns
A=B Mod PP: 18.0 ns
D#=ATan2(E#,F#): 65.0 ns
L$=M$+S$: 270.0 ns
A=B Shl PP: 2.0 ns
D#=Sqr(E#): 8.0 ns
L$=Left$(M$,SQ): 90.0 ns
A=B Sar PP: 6.0 ns
D#=Log(G#): 45.0 ns
L$=Right$(M$,SQ): 100.0 ns
A=Asc(S$): 181.0 ns
D#=Log10(G#): 51.0 ns
L$=Chr$(SYM): 170.0 ns
A=Len(M$): 80.0 ns
D#=Exp(O#): 27.0 ns
L$=Mid$(M$,SPOS,SQ): 220.0 ns
A=Instr(M$,S$): 100.0 ns
: 0.0 ns
L$=String$(S$,SYMQ): 600.0 ns
A=Rand(): 41.0 ns
D#=Rnd(): 30.0 ns
L$=Replace$(M$,S$,' '): 330.0 ns
A=INTF(B): 6.0 ns
D#=FLOATF#(E#): 9.0 ns
L$=STRINGF$(M$): 70.0 ns
A=im(spos): 3.0 ns
D#=fm#(spos): 4.0 ns
L$=sm$(spos): 31.0 ns
A=J\i: 5.0 ns
D#=J\f#: 4.0 ns
L$=J\s$: 30.0 ns
PokeByte: 8.0 ns
PokeFloat: 9.0 ns
PokeInt: 9.0 ns
PeekByte: 8.0 ns
PeekFloat: 9.0 ns
PeekInt: 8.0 ns
A=D#: 4.0 ns
D#=S$: 85.0 ns
S$=A: 240.0 ns
D#=A: 40.0 ns
S$=D#: 109.0 ns
A=S$: 55.0 ns
IF B=C: 2.0 ns
IF E#=F#: 4.0 ns
IF I.T=J.T: 4.0 ns
IF B>C: 2.0 ns
IF E#>F#: 4.0 ns
IF M$=L$: 90.0 ns




DareDevil2007
Athlon x2 64 duo - 2.2Ghz - 1GB ram 667

template: 1.0 ns
A=B: 1.0 ns
D#=E#: 3.0 ns
I.T=J.T: 8.0 ns
A=B+C: 2.0 ns
D#=E#+F#: 6.0 ns
I.T=New T: 58.0 ns
A=B-C: 4.0 ns
D#=E#-F#: 11.0 ns
Delete I.T: 58.0 ns
A=B*C: 5.0 ns
D#=E#*F#: 10.0 ns
I.T=Before J.T: 15.0 ns
A=B/C: 21.0 ns
D#=E#/F#: 10.0 ns
I.T=After J.T: 15.0 ns
A=B^P: 140.0 ns
D#=E#^F#: 330.0 ns
I.T=First T: 12.0 ns
A=Abs(B): 5.0 ns
D#=Abs(E#): 8.0 ns
I.T=Last T: 16.0 ns
A=Sgn(B): 3.0 ns
D#=Sgn(E#): 10.0 ns
Insert I.T Before J.T: 10.0 ns
A=Floor(E#): 70.0 ns
D#=Sin(E#): 55.0 ns
Insert I.T After J.T: 14.0 ns
A=Int(E#): 8.0 ns
D#=Cos(E#): 58.0 ns
For I.T=Each T: 26.0 ns
A=Ceil(E#): 71.0 ns
D#=Tan(E#): 72.0 ns
Delete Each T: 54.0 ns
A=B And C: 3.0 ns
D#=ASin(R#): 188.0 ns
A=Handle(J.T): 18.0 ns
A=B Or C: 4.0 ns
D#=ACos(R#): 189.0 ns
I.T=Object(Handle): 39.0 ns
A=B Xor C: 4.0 ns
D#=ATan(E#): 88.0 ns
L$=M$: 60.0 ns
A=B Mod PP: 25.0 ns
D#=ATan2(E#,F#): 91.0 ns
L$=M$+S$: 310.0 ns
A=B Shl PP: 4.0 ns
D#=Sqr(E#): 6.0 ns
L$=Left$(M$,SQ): 120.0 ns
A=B Sar PP: 5.0 ns
D#=Log(G#): 61.0 ns L$=Right$(M$,SQ): 120.0 ns
A=Asc(S$): 225.0 ns
D#=Log10(G#): 62.0 ns
L$=Chr$(SYM): 210.0 ns
A=Len(M$): 60.0 ns
D#=Exp(O#): 34.0 ns
L$=Mid$(M$,SPOS,SQ): 340.0 ns
A=Instr(M$,S$): 140.0 ns : 0.0 ns
L$=String$(S$,SYMQ): 760.0 ns
A=Rand(): 62.0 ns
D#=Rnd(): 39.0 ns
L$=Replace$(M$,S$,' '): 420.0 ns
A=INTF(B): 8.0 ns
D#=FLOATF#(E#): 10.0 ns
L$=STRINGF$(M$): 120.0 ns
A=im(spos): 6.0 ns
D#=fm#(spos): 3.0 ns
L$=sm$(spos): 48.0 ns
A=J\i: 3.0 ns
D#=J\f#: 6.0 ns
L$=J\s$: 46.0 ns
PokeByte: 10.0 ns
PokeFloat: 6.0 ns
PokeInt: 10.0 ns
PeekByte: 8.0 ns
PeekFloat: 11.0 ns
PeekInt: 8.0 ns
A=D#: 6.0 ns
D#=S$: 114.0 ns
S$=A: 300.0 ns
D#=A: 90.0 ns
S$=D#: 131.0 ns
A=S$: 72.0 ns
IF B=C: 3.0 ns
IF E#=F#: 8.0 ns
IF I.T=J.T: 7.0 ns
IF B>C: 3.0 ns
IF E#>F#: 8.0 ns
IF M$=L$: 112.0 ns


Damien Sturdy2007
Interesting:

Ordered slowest>fastest. Some simple stuff like A=B seems *slower* than A=B AND C? :S



Matt Merkulov2007
There are some infelcities depending of checks' quantity (precision). Sometimes even template (no operations at all, just plain cycle) is slower than equation. Try to raise checks quantity.


Naughty Alien2007
here is P4 2.4GHz, 1 Gig Ram, nVidia 7600GT, 256MB VRAM, WinXP Pro SP2


_332007
Matt Merkulov, have you got a BlitzMax version of this test? I tried to convert it but got stuck with the way Types are declared and used in BM, and I have little time to study BM as I'm focusing my energy on my project.


Code Archives Forum