Code archives/Miscellaneous/BlitzMax benchmark

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

Download source code

BlitzMax benchmark by Matt Merkulov2010
Results (ns - nanoseconds):
Empty cycle: 0.11 ns
IntVar1 = IntVar2: 0.8 ns
Global IntVar1 = IntVar2: 0.8 ns
IntVar1 = Global IntVar2: 0.82 ns
Global IntVar1 = Global IntVar2: 0.97 ns
FloatVar1 = FloatVar2: 0.27 ns
Global FloatVar1 = FloatVar2: 0.92 ns
FloatVar1 = Global FloatVar2: 0.51 ns
Global FloatVar1 = Global FloatVar2: 1.14 ns
StringVar1 = StringVar2: 0.3 ns
Global StringVar1 = StringVar2: 6.42 ns
StringVar1 = Global StringVar2: 0.3 ns
Global StringVar1 = Global StringVar2: 4.6 ns
If IntVar1 = IntVar2 Then: 0.6 ns
If FloatVar1 = FloatVar2 Then: 1.35 ns
If StringVar1 = StringVar2 Then: 4.05 ns
IntVar1 > IntVar2 Then: 0.61 ns
If FloatVar1 > FloatVar2 Then: 0.87 ns
IntVar1 = IntArray[ ElementNum ]: 0.57 ns
FloatVar1 = FloatArray[ ElementNum ]: 0.18 ns
StringVar1 = StringArray[ ElementNum ]: 0.19 ns
IntVar1 = IntFunction(): 1.12 ns
FloatVar1 = FloatFunction(): 0.68 ns
StringVar1 = StringFunction(): 2.91 ns
Function1( IntVar1 ): 1.8 ns
Function1( IntVar1, IntVar2 ): 2.4 ns
Function3( IntVar1, IntVar2, IntVar3 ): 2.35 ns
IntVar1 = FloatVar2: 3.58 ns
FloatVar1 = IntVar2: 0.29 ns
IntVar1 = NumString: 38.03 ns
FloatVar1 = NumString: 32.69 ns
StingVar1 = IntVar2: 90.2 ns
StringVar1 = FloatVar2: 1425.03 ns
IntVar1 = IntVar2 + IntVar3: 0.81 ns
FloatVar1 = FloatVar2 + FloatVar3: 0.16 ns
IntVar1 = IntVar2 + IntVar3: 0.48 ns
FloatVar1 = FloatVar2 - FloatVar3: 0.52 ns
IntVar1 = IntVar2 * IntVar3: 0.69 ns
FloatVar1 = FloatVar2 * FloatVar3: 0.24 ns
IntVar1 = IntVar2 / IntVar3: 1.79 ns
FloatVar1 = FloatVar2 / FloatVar3: 0.42 ns
IntVar1 = IntVar2 ^ Power: 621.83 ns
FloatVar1 = FloatVar2 ^ Power: 326.08 ns
IntVar1 = Abs( IntVar2 ): 2.58 ns
FloatVar1 = Abs( FloatVar2 ): 2.77 ns
IntVar1 = Sgn( IntVar2 ): 3.94 ns
FloatVar1 = Sgn( FloatVar2 ): 2.18 ns
IntVar1 = Rand( IntVar2 ): 37.58 ns
FloatVar1 = Rnd( FloatVar2 ): 18.47 ns
IntVar1 = Int( FloatVar2 ): 5.64 ns
IntVar1 = Floot( FloatVar2 ): 51.23 ns
IntVar1 = Ceil( FloatVar2 ): 57.58 ns
IntVar1 = IntVar2 And IntVar3: 1.12 ns
IntVar1 = IntVar2 Or IntVar3: 1.17 ns
IntVar1 = Not( IntVar2 ): 1.0 ns
IntVar1 = IntVar2 & IntVar3: 1.73 ns
IntVar1 = IntVar2 | IntVar3: 1.45 ns
IntVar1 = IntVar2 Shl BitNum: 0.74 ns
IntVar1 = IntVar2 Shr BitNum: 0.85 ns
FloatVar1 = Sin( FloatVar2 ): 66.08 ns
FloatVar1 = Cos( FloatVar2 ): 34.33 ns
FloatVar1 = Tan( FloatVar2 ): 62.54 ns
FloatVar1 = ASin( SinValue ): 143.29 ns
FloatVar1 = ACos( SinValue ): 238.3 ns
FloatVar1 = ATan( SinValue ): 64.93 ns
FloatVar1 = ATan2( FloatVar2, FloatVar3 ): 91.44 ns
FloatVar1 = Sqr( FloatVar2 ): 53.37 ns
FloatVar1 = Log( LogValue ): 30.44 ns
FloatVar1 = Log10( LogValue ): 94.56 ns
FloatVar1 = Exp( Power ): 77.12 ns
StringVar1 = StringVar2[ ..ElementNum ]: 73.94 ns
StringVar1 = StringVar2[ ElementNum.. ]: 74.22 ns
StringVar1 = StringVar2[ ElementNum1..ElementNum2 ]: 44.21 ns
StringVar1 = StringVar2.Find( SubString1 ): 151.39 ns
StringVar1 = StringVar2.Replace( SubString1, SubString2 ): 117.23 ns
StringVar1 = StringVar2.ToLower(): 76.01 ns
StringVar1 = Chr( SymbolNum ): 66.46 ns
IntVar1 = Asc( Symbol ): 3.8 ns
Object1 = Object2: 0.37 ns
Object1.IntField = IntVar2: 0.91 ns
Object1.FloatField = FloatVar2: 8.73 ns
Object1.StringField = StringVar2: 4.07 ns
IntVar1 = Object1.IntMethod(): 5.13 ns
FloatVar1 = Object1.FloatMethod(): 4.3 ns
StringVar1 = Object1.StringMethod(): 3.95 ns
Object1.EmptyMethod(): 4.82 ns
Object1.ExistingMethod(): 4.16 ns
Object2.ExistingMethod(): 4.56 ns
Object1.Method1( IntVar1 ): 3.93 ns
Object1.Method2( IntVar1, IntVar2 ): 5.09 ns
Object1.Method3( IntVar1, IntVar2,IntVar3 ): 4.6 ns
Object1.Method1Var( IntVar1 ): 4.87 ns
Object1.Method2Var( IntVar1, IntVar2 ): 7.63 ns
Object1.Method3Var( IntVar1, IntVar2,IntVar3 ): 8.58 ns
SuperStrict
SeedRnd( Millisecs() )

Type Type1
	Field IntField:Int
	Field FloatField:Int
	Field StringField:String
	
	
	
	Method EmptyMethod()
	End Method
	
	
	
	Method ExistingMethod()
		IntField :+ 1
	End Method
	
	
	
	Method IntMethod:Int()
		Return IntField
	End Method
	
	
	
	Method FloatMethod:Float()
		Return FloatField
	End Method
	
	
	
	Method StringMethod:String()
		Return StringField
	End Method
	
	
	
	Method Method1( Value1:Int )
		Value1 = 0
	End Method
	
	
	
	Method Method2( Value1:Int, Value2:Int )
		Value1 = Value2
	End Method
	
	
	
	Method Method3( Value1:Int, Value2:Int, Value3:Int )
		Value1 = Value2 + Value3
	End Method
	
	
	
	Method Method1Var( Value1:Int Var )
		Value1 = 0
	End Method
	
	
	
	Method Method2Var( Value1:Int Var, Value2:Int Var )
		Value1 = 1
		Value2 = 2
	End Method
	
	
	
	Method Method3Var( Value1:Int Var, Value2:Int Var, Value3:Int Var )
		Value1 = 1
		Value2 = 2
		Value3 = 3
	End Method
End Type



Type Type2 Extends Type1
	Method ExistingMethod()
		IntField :+ 2
	End Method
End Type



Const Cycles:Int = 10000000
Const Passes:Int = 10
Const Size:Int = 10
Const TestsQuantity:Int = 86

Local TestTime:Int[] = New Int[ TestsQuantity ]
Local TestName:String[] = New String[ TestsQuantity ]

Local IntArray:Int[] = New Int[ Size ]
Local FloatArray:Float[] = New Float[ Size ]
Local StringArray:String[] = New String[ Size ]

Local File:TStream = WriteFile( "output.txt" )

Graphics 800, 600

For Local Pass:Int = 0 Until Passes
	Local TestNumArray:Int[] = New Int[ TestsQuantity ]
	For Local N:Int = 0 Until TestsQuantity
		TestNumArray[ N ] = N
	Next
	
	For Local N:Int = 0 Until TestsQuantity - 1
		TestNumArray[ N ] = N
		Local M:Int = Rand( N, TestsQuantity - 1 )
		Local Z:Int = TestNumArray[ M ]
		TestNumArray[ M ] = TestNumArray[ N ]
		TestNumArray[ N ] = Z
	Next	
	
	For Local ArrayNum:Int = 0 Until TestsQuantity
		Local IntVar1:Int
		Global IntVar2:Int = Rand( -1000000000, 1000000000 )
		Global IntVar3:Int = Rand( -1000000000, 1000000000 )
		
		Local FloatVar1:Float
		Global FloatVar2:Float = Rnd( -1000000000.0, 1000000000.0 )
		Global FloatVar3:Float = Rnd( -1000000000.0, 1000000000.0 )
		
		Local StringVar1:String
		Global StringVar2:String = RndString( Size )
		Global StringVar3:String = RndString( Size )
		For Local N:Int = 0 Until Size
			StringArray[ N ] = RndString( Size )
		Next
		
		Local NumString:String = ""
		For Local N:Int = 1 To 9
			NumString :+ Chr( 48 + Rand( 0, 9 ) )
		Next
		
		Local BitNum:Int = Rand( 0, 31 )
		Local ElementNum:Int = Rand( 0, Size - 1 )
		Local ElementNum1:Int = Rand( 0, Size / 2 - 1 )
		Local ElementNum2:Int = ElementNum1 + Rand( 0, Size / 2 - 1 )
		Local SubString1:String = StringVar2[ ElementNum1 + 5..ElementNum1 + 8 ]
		Local SubString2:String = RndString( 3 )
		Local LogValue:Float = Rnd( 2.0, 1000000000.0 )
		Local SinValue:Float = Rnd( -1.0, 1.0 )
		Local Power:Float = Rnd( -20, 20 )
		Local Symbol:String = Chr( Rand( 32, 127 ) )
		Local SymbolNum:Int = Rand( 32, 127 )
		
		Local Object1:Type1 = New Type1
		Local Object2:Type2 = New Type2

		Local Time:Int = Millisecs()
		Local TestNum:Int = TestNumArray[ ArrayNum ]
		Select TestNum
			Case 0
				For Local N:Int = 0 Until Cycles
				Next
				TestName[ TestNum ] = "Empty cycle"
			Case 1
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2"
			Case 2
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatVar2
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatVar2"
			Case 3
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2"
			Case 4
				For Local N:Int = 0 Until Cycles
					If IntVar1 = IntVar2 Then IntVar1 = IntVar2
				Next
				TestName[ TestNum ] = "If IntVar1 = IntVar2 Then"
			Case 5
				For Local N:Int = 0 Until Cycles
					If FloatVar1 = FloatVar2 Then IntVar1 = IntVar2
				Next
				TestName[ TestNum ] = "If FloatVar1 = FloatVar2 Then"
			Case 6
				For Local N:Int = 0 Until Cycles
					If StringVar1 = StringVar2 Then IntVar1 = IntVar2
				Next
				TestName[ TestNum ] = "If StringVar1 = StringVar2 Then"
			Case 7
				For Local N:Int = 0 Until Cycles
					If IntVar1 > IntVar2 Then IntVar1 = IntVar2
				Next
				TestName[ TestNum ] = "If IntVar1 > IntVar2 Then"
			Case 8
				For Local N:Int = 0 Until Cycles
					If FloatVar1 > FloatVar2 Then IntVar1 = IntVar2
				Next
				TestName[ TestNum ] = "If FloatVar1 > FloatVar2 Then"
			Case 9
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntArray[ ElementNum ]
				Next
				TestName[ TestNum ] = "IntVar1 = IntArray[ ElementNum ]"
			Case 10
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatArray[ ElementNum ]
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatArray[ ElementNum ]"
			Case 11
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringArray[ ElementNum ]
				Next
				TestName[ TestNum ] = "StringVar1 = StringArray[ ElementNum ]"
			Case 12
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntFunction()
				Next
				TestName[ TestNum ] = "IntVar1 = IntFunction()"
			Case 13
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatFunction()
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatFunction()"
			Case 14
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringFunction()
				Next
				TestName[ TestNum ] = "StringVar1 = StringFunction()"
			Case 15
				For Local N:Int = 0 Until Cycles
					Function1( IntVar1 )
				Next
				TestName[ TestNum ] = "Function1( IntVar1 )"
			Case 16
				For Local N:Int = 0 Until Cycles
					Function2( IntVar1, IntVar2 )
				Next
				TestName[ TestNum ] = "Function1( IntVar1, IntVar2 )"
			Case 17
				For Local N:Int = 0 Until Cycles
					Function3( IntVar1, IntVar2, IntVar3 )
				Next
				TestName[ TestNum ] = "Function3( IntVar1, IntVar2, IntVar3 )"
			Case 18
				For Local N:Int = 0 Until Cycles
					IntVar1 = FloatVar2
				Next
				TestName[ TestNum ] = "IntVar1 = FloatVar2"
			Case 19
				For Local N:Int = 0 Until Cycles
					FloatVar1 = IntVar2
				Next
				TestName[ TestNum ] = "FloatVar1 = IntVar2"
			Case 20
				For Local N:Int = 0 Until Cycles
					IntVar1 = NumString.ToInt()
				Next
				TestName[ TestNum ] = "IntVar1 = NumString"
			Case 21
				For Local N:Int = 0 Until Cycles
					FloatVar1 = NumString.ToInt()
				Next
				TestName[ TestNum ] = "FloatVar1 = NumString"
			Case 22
				For Local N:Int = 0 Until Cycles
					StringVar1 = IntVar2
				Next
				TestName[ TestNum ] = "StingVar1 = IntVar2"
			Case 23
				For Local N:Int = 0 Until Cycles
					StringVar1 = FloatVar2
				Next
				TestName[ TestNum ] = "StringVar1 = FloatVar2"
			Case 24
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 + IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 + IntVar3"
			Case 25
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatVar2 + FloatVar3
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatVar2 + FloatVar3"
			Case 26
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 - IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 - IntVar3"
			Case 27
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatVar2 - FloatVar3
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatVar2 - FloatVar3"
			Case 28
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 * IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 * IntVar3"
			Case 29
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatVar2 * FloatVar3
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatVar2 * FloatVar3"
			Case 30
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 / IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 / IntVar3"
			Case 31
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatVar2 / FloatVar3
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatVar2 / FloatVar3"
			Case 32
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 ^ IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 ^ Power"
			Case 33
				For Local N:Int = 0 Until Cycles
					FloatVar1 = FloatVar2 ^ FloatVar3
				Next
				TestName[ TestNum ] = "FloatVar1 = FloatVar2 ^ Power"
			Case 34
				For Local N:Int = 0 Until Cycles
					IntVar1 = Abs( IntVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Abs( IntVar2 )"
			Case 35
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Abs( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Abs( FloatVar2 )"
			Case 36
				For Local N:Int = 0 Until Cycles
					IntVar1 = Sgn( IntVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Sgn( IntVar2 )"
			Case 37
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Sgn( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Sgn( FloatVar2 )"
			Case 38
				For Local N:Int = 0 Until Cycles
					IntVar1 = Rand( IntVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Rand( IntVar2 )"
			Case 39
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Rnd( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Rnd( FloatVar2 )"
			Case 40
				For Local N:Int = 0 Until Cycles
					IntVar1 = Int( FloatVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Int( FloatVar2 )"
			Case 41
				For Local N:Int = 0 Until Cycles
					IntVar1 = Floor( FloatVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Floot( FloatVar2 )"
			Case 42
				For Local N:Int = 0 Until Cycles
					IntVar1 = Ceil( FloatVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Ceil( FloatVar2 )"
			Case 43
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 And IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 And IntVar3"
			Case 44
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 Or IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 Or IntVar3"
			Case 46
				For Local N:Int = 0 Until Cycles
					IntVar1 = Not( IntVar2 )
				Next
				TestName[ TestNum ] = "IntVar1 = Not( IntVar2 )"
			Case 47
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 & IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 & IntVar3"
			Case 48
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 | IntVar3
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 | IntVar3"
			Case 49
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 Shl BitNum
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 Shl BitNum"
			Case 50
				For Local N:Int = 0 Until Cycles
					IntVar1 = IntVar2 Shr BitNum
				Next
				TestName[ TestNum ] = "IntVar1 = IntVar2 Shr BitNum"
			Case 51
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Sin( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Sin( FloatVar2 )"
			Case 52
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Cos( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Cos( FloatVar2 )"
			Case 53
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Tan( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Tan( FloatVar2 )"
			Case 54
				For Local N:Int = 0 Until Cycles
					FloatVar1 = ASin( SinValue )
				Next
				TestName[ TestNum ] = "FloatVar1 = ASin( SinValue )"
			Case 55
				For Local N:Int = 0 Until Cycles
					FloatVar1 = ACos( SinValue )
				Next
				TestName[ TestNum ] = "FloatVar1 = ACos( SinValue )"
			Case 56
				For Local N:Int = 0 Until Cycles
					FloatVar1 = ATan( SinValue )
				Next
				TestName[ TestNum ] = "FloatVar1 = ATan( SinValue )"
			Case 57
				For Local N:Int = 0 Until Cycles
					FloatVar1 = ATan2( FloatVar2, FloatVar3 )
				Next
				TestName[ TestNum ] = "FloatVar1 = ATan2( FloatVar2, FloatVar3 )"
			Case 58
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Sqr( FloatVar2 )
				Next
				TestName[ TestNum ] = "FloatVar1 = Sqr( FloatVar2 )"
			Case 59
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Log( LogValue )
				Next
				TestName[ TestNum ] = "FloatVar1 = Log( LogValue )"
			Case 60
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Log10( LogValue )
				Next
				TestName[ TestNum ] = "FloatVar1 = Log10( LogValue )"
			Case 61
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Exp( Power )
				Next
				TestName[ TestNum ] = "FloatVar1 = Exp( Power )"
			Case 62
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2[ ..ElementNum ]
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2[ ..ElementNum ]"
			Case 63
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2[ ElementNum.. ]
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2[ ElementNum.. ]"
			Case 64
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2[ ElementNum1..ElementNum2 ]
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2[ ElementNum1..ElementNum2 ]"
			Case 65
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2.Find( SubString1 )
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2.Find( SubString1 )"
			Case 66
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2.Replace( SubString1, SubString2 )
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2.Replace( SubString1, SubString2 )"
			Case 67
				For Local N:Int = 0 Until Cycles
					StringVar1 = StringVar2.ToLower()
				Next
				TestName[ TestNum ] = "StringVar1 = StringVar2.ToLower()"
			Case 68
				For Local N:Int = 0 Until Cycles
					StringVar1 = Chr( SymbolNum )
				Next
				TestName[ TestNum ] = "StringVar1 = Chr( SymbolNum )"
			Case 69
				For Local N:Int = 0 Until Cycles
					IntVar1 = Asc( Symbol )
				Next
				TestName[ TestNum ] = "IntVar1 = Asc( Symbol )"
			Case 70
				For Local N:Int = 0 Until Cycles
					Object1 = Object2
				Next
				TestName[ TestNum ] = "Object1 = Object2"
			Case 71
				For Local N:Int = 0 Until Cycles
					Object1.IntField = IntVar2
				Next
				TestName[ TestNum ] = "Object1.IntField = IntVar2"
			Case 72
				For Local N:Int = 0 Until Cycles
					Object1.FloatField = FloatVar2
				Next
				TestName[ TestNum ] = "Object1.FloatField = FloatVar2"
			Case 73
				For Local N:Int = 0 Until Cycles
					Object1.StringField = StringVar2
				Next
				TestName[ TestNum ] = "Object1.StringField = StringVar2"
			Case 74
				For Local N:Int = 0 Until Cycles
					IntVar1 = Object1.IntMethod()
				Next
				TestName[ TestNum ] = "IntVar1 = Object1.IntMethod()"
			Case 75
				For Local N:Int = 0 Until Cycles
					FloatVar1 = Object1.FloatMethod()
				Next
				TestName[ TestNum ] = "FloatVar1 = Object1.FloatMethod()"
			Case 76
				For Local N:Int = 0 Until Cycles
					StringVar1 = Object1.StringMethod()
				Next
				TestName[ TestNum ] = "StringVar1 = Object1.StringMethod()"
			Case 77
				For Local N:Int = 0 Until Cycles
					Object1.EmptyMethod()
				Next
				TestName[ TestNum ] = "Object1.EmptyMethod()"
			Case 78
				For Local N:Int = 0 Until Cycles
					Object1.ExistingMethod()
				Next
				TestName[ TestNum ] = "Object1.ExistingMethod()"
			Case 79
				For Local N:Int = 0 Until Cycles
					Object2.ExistingMethod()
				Next
				TestName[ TestNum ] = "Object2.ExistingMethod()"
			Case 80
				For Local N:Int = 0 Until Cycles
					Object1.Method1( IntVar1 )
				Next
				TestName[ TestNum ] = "Object1.Method1( IntVar1 )"
			Case 81
				For Local N:Int = 0 Until Cycles
					Object1.Method2( IntVar1, IntVar2 )
				Next
				TestName[ TestNum ] = "Object1.Method2( IntVar1, IntVar2 )"
			Case 82
				For Local N:Int = 0 Until Cycles
					Object1.Method3( IntVar1, IntVar2,IntVar3 )
				Next
				TestName[ TestNum ] = "Object1.Method3( IntVar1, IntVar2,IntVar3 )"
			Case 83
				For Local N:Int = 0 Until Cycles
					Object1.Method1Var( IntVar1 )
				Next
				TestName[ TestNum ] = "Object1.Method1Var( IntVar1 )"
			Case 84
				For Local N:Int = 0 Until Cycles
					Object1.Method2Var( IntVar1, IntVar2 )
				Next
				TestName[ TestNum ] = "Object1.Method2Var( IntVar1, IntVar2 )"
			Case 85
				For Local N:Int = 0 Until Cycles
					Object1.Method3Var( IntVar1, IntVar2,IntVar3 )
				Next
				TestName[ TestNum ] = "Object1.Method3Var( IntVar1, IntVar2,IntVar3 )"
		End Select
		
		TestTime[ TestNum ] :+ Millisecs() - Time
	Next
	
	DrawRect( 0, 0, ( Pass + 1 ) * 16, 16 )
	Flip
Next



For Local TestNum:Int = 0 Until TestsQuantity
	WriteLine( File,  TestName[ TestNum ] + ": " + 1000000.0 * TestTime[ TestNum ] / Passes / Cycles + " ns" )
Next

CloseFile( File )
OpenURL( "output.txt" )


Function IntFunction:Int()
	Return 0
End Function



Function FloatFunction:Float()
	Return 0.0
End Function



Function StringFunction:String()
	Return ""
End Function



Function Function1( Value1:Int )
	Value1 = 0
End Function



Function Function2( Value1:Int, Value2:Int )
	Value1 = Value2
End Function



Function Function3( Value1:Int, Value2:Int, Value3:Int )
	Value1 = Value2 + Value3
End Function



Function RndString:String( Symbols:Int )
	Local St:String = ""
	For Local N:Int = 0 Until Symbols
		St :+ Chr( Rand( 32, 127 ) )
	Next
	Return St
End Function

Comments

slenkar2010
NERD!


Code Archives Forum