To be fair with Harbour, here are the Harbour results repeated with -gc3
(XPP always uses such mode).

03/16/09 20:04:46 Windows XP 5.1.2600 Service Pack 3
Harbour 1.1.0dev (Rev. 10601) (MT) Microsoft Visual C 14.0.24999 (32-bit)
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.03
====================================================================
[ T001: x := L_C ]..............................................0.16
[ T002: x := L_N ]..............................................0.03
[ T003: x := L_D ]..............................................0.03
[ T004: x := S_C ]..............................................0.16
[ T005: x := S_N ]..............................................0.05
[ T006: x := S_D ]..............................................0.06
[ T007: x := M_C ]..............................................0.17
[ T008: x := M_N ]..............................................0.06
[ T009: x := M_D ]..............................................0.08
[ T010: x := P_C ]..............................................0.17
[ T011: x := P_N ]..............................................0.06
[ T012: x := P_D ]..............................................0.08
[ T013: x := F_C ]..............................................0.48
[ T014: x := F_N ]..............................................0.31
[ T015: x := F_D ]..............................................0.17
[ T016: x := o:Args ]...........................................0.31
[ T017: x := o[2] ].............................................0.22
[ T018: round( i / 1000, 2 ) ]..................................0.30
[ T019: str( i / 1000 ) ].......................................0.94
[ T020: val( s ) ]..............................................0.47
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.80
[ T022: dtos( d - i % 10000 ) ].................................0.92
[ T023: eval( { || i % 16 } ) ].................................1.42
[ T024: eval( bc := { || i % 16 } ) ]...........................0.53
[ T025: eval( { |x| x % 16 }, i ) ].............................0.97
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.50
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.95
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.53
[ T029: x := &( "f1(" + str(i) + ")" ) ]........................7.05
[ T030: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................8.67
[ T031: x := valtype( x ) +  valtype( i ) ].....................0.86
[ T032: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........1.52
[ T033: x := a[ i % 16 + 1 ] == s ].............................0.69
[ T034: x := a[ i % 16 + 1 ] = s ]..............................0.75
[ T035: x := a[ i % 16 + 1 ] >= s ].............................0.75
[ T036: x := a[ i % 16 + 1 ] <= s ].............................0.75
[ T037: x := a[ i % 16 + 1 ] < s ]..............................0.75
[ T038: x := a[ i % 16 + 1 ] > s ]..............................0.73
[ T039: ascan( a, i % 16 ) ]....................................0.52
[ T040: ascan( a, { |x| x == i % 16 } ) ].......................6.05
[ T041: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....2.30
[ T042: x := a ]................................................0.17
[ T043: x := {} ]...............................................0.58
[ T044: f0() ]..................................................0.14
[ T045: f1( i ) ]...............................................0.16
[ T046: f2( c[1...8] ) ]........................................0.23
[ T047: f2( c[1...40000] ) ]....................................0.25
[ T048: f2( @c[1...40000] ) ]...................................0.25
[ T049: f2( @c[1...40000] ), c2 := c ]..........................0.30
[ T050: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.80
[ T051: f2( a ) ]...............................................0.27
[ T052: x := f4() ].............................................1.48
[ T053: x := f5() ].............................................0.64
[ T054: x := space(16) ]........................................0.55
[ T055: f_prv( c ) ]............................................1.14
====================================================================
[ total application time: ]....................................51.05
[ total real time: ]...........................................51.56


On Mon, Mar 16, 2009 at 8:02 PM, Viktor Szakáts <[email protected]>wrote:

> After fixing the HB_SYMBOL_UNUSED() issue in XPP and
> making T017 equivalent to T016 (there is no array access of
> objects in XPP), here are the results:
>
> 03/16/2009 19:56:03 Windows XP 05.01 Build 02600 Service Pack 3
> Xbase++ (R) Version 1.90 (MT)
> THREADS: 0
> N_LOOPS: 1000000
> [ T000: empty loop overhead ]...................................0.03
> ====================================================================
> [ T001: x := L_C ]..............................................0.04
> [ T002: x := L_N ]..............................................0.01
> [ T003: x := L_D ]..............................................0.01
> [ T004: x := S_C ]..............................................0.07
> [ T005: x := S_N ]..............................................0.05
> [ T006: x := S_D ]..............................................0.05
> [ T007: x := M_C ]..............................................0.27
> [ T008: x := M_N ]..............................................0.19
> [ T009: x := M_D ]..............................................0.17
> [ T010: x := P_C ]..............................................0.25
> [ T011: x := P_N ]..............................................0.21
> [ T012: x := P_D ]..............................................0.19
> [ T013: x := F_C ]..............................................0.38
> [ T014: x := F_N ]..............................................0.33
> [ T015: x := F_D ]..............................................0.29
> [ T016: x := o:Args ]...........................................0.24
> [ T017: x := o:Args ]...........................................0.22
> [ T018: round( i / 1000, 2 ) ]..................................1.55
> [ T019: str( i / 1000 ) ].......................................9.97
> [ T020: val( s ) ]..............................................0.44
> [ T021: val( a [ i % 16 + 1 ] ) ]...............................1.07
> [ T022: dtos( d - i % 10000 ) ].................................1.50
> [ T023: eval( { || i % 16 } ) ].................................1.53
> [ T024: eval( bc := { || i % 16 } ) ]...........................0.98
> [ T025: eval( { |x| x % 16 }, i ) ].............................0.66
> [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.57
> [ T027: eval( { |x| f1( x ) }, i ) ]............................0.86
> [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.72
> [ T029: x := &( "f1(" + str(i) + ")" ) ].......................25.50
> [ T030: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............25.70
> [ T031: x := valtype( x ) +  valtype( i ) ].....................0.46
> [ T032: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ].........10.31
> [ T033: x := a[ i % 16 + 1 ] == s ].............................0.39
> [ T034: x := a[ i % 16 + 1 ] = s ]..............................0.60
> [ T035: x := a[ i % 16 + 1 ] >= s ].............................0.56
> [ T036: x := a[ i % 16 + 1 ] <= s ].............................0.58
> [ T037: x := a[ i % 16 + 1 ] < s ]..............................0.61
> [ T038: x := a[ i % 16 + 1 ] > s ]..............................0.58
> [ T039: ascan( a, i % 16 ) ]....................................0.99
> [ T040: ascan( a, { |x| x == i % 16 } ) ].......................6.86
> [ T041: iif( i%1000==0, a:={}, ), aadd(a,{i,1,.t.,s,s2,a2, ]....9.00
> [ T042: x := a ]................................................0.01
> [ T043: x := {} ]...............................................0.52
> [ T044: f0() ]..................................................0.14
> [ T045: f1( i ) ]...............................................0.30
> [ T046: f2( c[1...8] ) ]........................................0.22
> [ T047: f2( c[1...40000] ) ]....................................0.22
> [ T048: f2( @c[1...40000] ) ]...................................0.22
> [ T049: f2( @c[1...40000] ), c2 := c ]..........................0.25
> [ T050: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.33
> [ T051: f2( a ) ]...............................................0.19
> [ T052: x := f4() ].............................................1.27
> [ T053: x := f5() ].............................................0.61
> [ T054: x := space(16) ]........................................0.41
> [ T055: f_prv( c ) ]............................................0.72
> ====================================================================
> [ total application time: ]...................................112.04
> [ total real time: ]..........................................112.04
>
>
> 03/16/09 20:00:22 Windows XP 5.1.2600 Service Pack 3
> Harbour 1.1.0dev (Rev. 10601) (MT) Microsoft Visual C 14.0.24999 (32-bit)
> THREADS: 0
> N_LOOPS: 1000000
> [ T000: empty loop overhead ]...................................0.08
> ====================================================================
> [ T001: x := L_C ]..............................................0.20
> [ T002: x := L_N ]..............................................0.09
> [ T003: x := L_D ]..............................................0.11
> [ T004: x := S_C ]..............................................0.19
> [ T005: x := S_N ]..............................................0.05
> [ T006: x := S_D ]..............................................0.05
> [ T007: x := M_C ]..............................................0.20
> [ T008: x := M_N ]..............................................0.11
> [ T009: x := M_D ]..............................................0.09
> [ T010: x := P_C ]..............................................0.20
> [ T011: x := P_N ]..............................................0.09
> [ T012: x := P_D ]..............................................0.09
> [ T013: x := F_C ]..............................................0.50
> [ T014: x := F_N ]..............................................0.36
> [ T015: x := F_D ]..............................................0.19
> [ T016: x := o:Args ]...........................................0.38
> [ T017: x := o[2] ].............................................0.31
> [ T018: round( i / 1000, 2 ) ]..................................0.50
> [ T019: str( i / 1000 ) ].......................................1.06
> [ T020: val( s ) ]..............................................0.52
> [ T021: val( a [ i % 16 + 1 ] ) ]...............................1.02
> [ T022: dtos( d - i % 10000 ) ].................................1.05
> [ T023: eval( { || i % 16 } ) ].................................1.50
> [ T024: eval( bc := { || i % 16 } ) ]...........................0.56
> [ T025: eval( { |x| x % 16 }, i ) ].............................1.02
> [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.64
> [ T027: eval( { |x| f1( x ) }, i ) ]............................1.16
> [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.72
> [ T029: x := &( "f1(" + str(i) + ")" ) ]........................7.50
> [ T030: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............10.11
> [ T031: x := valtype( x ) +  valtype( i ) ].....................1.02
> [ T032: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........1.84
> [ T033: x := a[ i % 16 + 1 ] == s ].............................0.97
> [ T034: x := a[ i % 16 + 1 ] = s ]..............................1.00
> [ T035: x := a[ i % 16 + 1 ] >= s ].............................1.02
> [ T036: x := a[ i % 16 + 1 ] <= s ].............................1.00
> [ T037: x := a[ i % 16 + 1 ] < s ]..............................1.02
> [ T038: x := a[ i % 16 + 1 ] > s ]..............................0.98
> [ T039: ascan( a, i % 16 ) ]....................................0.70
> [ T040: ascan( a, { |x| x == i % 16 } ) ].......................6.52
> [ T041: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....2.88
> [ T042: x := a ]................................................0.20
> [ T043: x := {} ]...............................................0.63
> [ T044: f0() ]..................................................0.28
> [ T045: f1( i ) ]...............................................0.39
> [ T046: f2( c[1...8] ) ]........................................0.38
> [ T047: f2( c[1...40000] ) ]....................................0.39
> [ T048: f2( @c[1...40000] ) ]...................................0.39
> [ T049: f2( @c[1...40000] ), c2 := c ]..........................0.45
> [ T050: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................1.09
> [ T051: f2( a ) ]...............................................0.38
> [ T052: x := f4() ].............................................1.70
> [ T053: x := f5() ].............................................0.75
> [ T054: x := space(16) ]........................................0.61
> [ T055: f_prv( c ) ]............................................1.36
> ====================================================================
> [ total application time: ]....................................62.91
> [ total real time: ]...........................................63.50
>
> Brgds,
> Viktor
>
>
>
>
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to