Hi Angel,
I'd suggest to disable memory statistics by using:
set HB_USER_CFLAGS=-DHB_FM_STATISTICS_OFF
before doing the build.

Harbour will run significantly faster this way.

[ Unfortunately current -nofmstat/-fmstat solution isn't
convenient for all situations. F.e. it can only turn on
FM stats for a build which has it turned off by default.
Probably the dynamic approach with some public
functions plus stub helper could clean this up nicely,
and this way hbfm* libs wouldn't even be needed.
Przemek, if you think, we can talk about it, maybe
there is better/other solution. ]

Brgds,
Viktor

2009/3/17 Angel Pais <[email protected]>

> Finally!!!
> After spending my afternoon re compiling Harbour y could run the test.
> Attached results for both compilers.
>
> HTH
> Angel
>
> Przemyslaw Czerpak escribió:
>
>  On Tue, 17 Mar 2009, Angel Pais wrote:
>>
>>> Attached xbase++  test.
>>>
>>
>> Thank you very much.
>> I would like to ask you also about Harbour results.
>> To compare them the test code should be executed on the same machine.
>> For Harbour compilation -gc3 should be used. AFAIK xbase++ does not
>> generate PCODE but code similar to Harbour -gc3 output.
>>
>> best regards,
>> Przemek
>>
>
>
> Intel Celeron CPU 560 @ 2.13GHz 1 MB RAM
>
> 03/17/2009 12:34:04 Windows XP 05.01 Build 02600 Service Pack 2
> Xbase++ (R) Version 1.90 (MT)
> THREADS: 0
> N_LOOPS: 1000000
> [ T000: empty loop overhead ]...................................0.06
> ====================================================================
> [ T001: x := L_C ]..............................................0.08
> [ T002: x := L_N ]..............................................0.03
> [ T003: x := L_D ]..............................................0.05
> [ T004: x := S_C ]..............................................0.21
> [ T005: x := S_N ]..............................................0.16
> [ T006: x := S_D ]..............................................0.14
> [ T007: x := M->M_C ]...........................................0.49
> [ T008: x := M->M_N ]...........................................0.39
> [ T009: x := M->M_D ]...........................................0.39
> [ T010: x := M->P_C ]...........................................0.52
> [ T011: x := M->P_N ]...........................................0.44
> [ T012: x := M->P_D ]...........................................0.49
> [ T013: x := F_C ]..............................................0.80
> [ T014: x := F_N ]..............................................0.72
> [ T015: x := F_D ]..............................................0.71
> [ T016: x := o:Args ]...........................................0.47
> [ T017: x := o[2] ].............................................0.11
> [ T018: round( i / 1000, 2 ) ]..................................1.52
> [ T019: str( i / 1000 ) ].......................................7.96
> [ T020: val( s ) ]..............................................0.89
> [ T021: val( a [ i % 16 + 1 ] ) ]...............................1.30
> [ T022: dtos( d - i % 10000 ) ].................................1.97
> [ T023: eval( { || i % 16 } ) ].................................3.66
> [ T024: eval( bc := { || i % 16 } ) ]...........................1.88
> [ T025: eval( { |x| x % 16 }, i ) ].............................1.51
> [ T026: eval( bc := { |x| x % 16 }, i ) ].......................1.15
> [ T027: eval( { |x| f1( x ) }, i ) ]............................1.75
> [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................1.53
> [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................2.46
> [ T030: x := &( 'f1(' + str(i) + ')' ) ].......................31.16
> [ T031: bc := &( '{|x|f1(x)}' ), eval( bc, i ) ]...............47.67
> [ T032: x := valtype( x ) +  valtype( i ) ].....................1.21
> [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........6.94
> [ T034: x := a[ i % 16 + 1 ] == s ].............................0.83
> [ T035: x := a[ i % 16 + 1 ] = s ]..............................1.14
> [ T036: x := a[ i % 16 + 1 ] >= s ].............................1.43
> [ T037: x := a[ i % 16 + 1 ] <= s ].............................1.27
> [ T038: x := a[ i % 16 + 1 ] < s ]..............................1.15
> [ T039: x := a[ i % 16 + 1 ] > s ]..............................1.13
> [ T040: ascan( a, i % 16 ) ]....................................2.44
> [ T041: ascan( a, { |x| x == i % 16 } ) ]......................15.11
> [ T042: iif( i%1000==0, a:={}, ), aadd(a,{i,1,.t.,s,s2,a2, ]...12.08
> [ T043: x := a ]................................................0.07
> [ T044: x := {} ]...............................................1.13
> [ T045: f0() ]..................................................0.42
> [ T046: f1( i ) ]...............................................0.55
> [ T047: f2( c[1...8] ) ]........................................0.44
> [ T048: f2( c[1...40000] ) ]....................................0.41
> [ T049: f2( @c[1...40000] ) ]...................................0.60
> [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.50
> [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.78
> [ T052: f2( a ) ]...............................................0.39
> [ T053: x := f4() ].............................................2.73
> [ T054: x := f5() ].............................................1.86
> [ T055: x := space(16) ]........................................0.97
> [ T056: f_prv( c ) ]............................................1.42
> ====================================================================
> [ total application time: ]...................................173.01
> [ total real time: ]..........................................173.01
>
>
>
> Warning !!! Memory statistic enabled.
>
> 03/17/09 16:23:21 Windows XP 5.1.2600 Service Pack 2
> Harbour 1.1.0dev (Rev. 10630) (MT) Microsoft Visual C++ 14.0.24999 (32-bit)
> THREADS: 0
> N_LOOPS: 1000000
> [ T000: empty loop overhead ]...................................0.13
> ====================================================================
> [ T001: x := L_C ]..............................................0.31
> [ T002: x := L_N ]..............................................0.09
> [ T003: x := L_D ]..............................................0.11
> [ T004: x := S_C ]..............................................0.36
> [ T005: x := S_N ]..............................................0.16
> [ T006: x := S_D ]..............................................0.16
> [ T007: x := M->M_C ]...........................................0.44
> [ T008: x := M->M_N ]...........................................0.22
> [ T009: x := M->M_D ]...........................................0.23
> [ T010: x := M->P_C ]...........................................0.42
> [ T011: x := M->P_N ]...........................................0.25
> [ T012: x := M->P_D ]...........................................0.23
> [ T013: x := F_C ]..............................................1.75
> [ T014: x := F_N ]..............................................0.81
> [ T015: x := F_D ]..............................................0.42
> [ T016: x := o:Args ]...........................................0.91
> [ T017: x := o[2] ].............................................0.55
> [ T018: round( i / 1000, 2 ) ]..................................1.06
> [ T019: str( i / 1000 ) ].......................................3.36
> [ T020: val( s ) ]..............................................1.16
> [ T021: val( a [ i % 16 + 1 ] ) ]...............................1.97
> [ T022: dtos( d - i % 10000 ) ].................................2.77
> [ T023: eval( { || i % 16 } ) ].................................4.53
> [ T024: eval( bc := { || i % 16 } ) ]...........................1.25
> [ T025: eval( { |x| x % 16 }, i ) ].............................2.84
> [ T026: eval( bc := { |x| x % 16 }, i ) ].......................1.28
> [ T027: eval( { |x| f1( x ) }, i ) ]............................3.03
> [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................1.55
> [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................1.50
> [ T030: x := &( "f1(" + str(i) + ")" ) ].......................21.67
> [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............27.23
> [ T032: x := valtype( x ) +  valtype( i ) ].....................2.72
> [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........4.34
> [ T034: x := a[ i % 16 + 1 ] == s ].............................1.61
> [ T035: x := a[ i % 16 + 1 ] = s ]..............................1.78
> [ T036: x := a[ i % 16 + 1 ] >= s ].............................1.80
> [ T037: x := a[ i % 16 + 1 ] <= s ].............................1.81
> [ T038: x := a[ i % 16 + 1 ] < s ]..............................1.78
> [ T039: x := a[ i % 16 + 1 ] > s ]..............................1.81
> [ T040: ascan( a, i % 16 ) ]....................................1.48
> [ T041: ascan( a, { |x| x == i % 16 } ) ]......................18.16
> [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....6.92
> [ T043: x := a ]................................................0.31
> [ T044: x := {} ]...............................................1.73
> [ T045: f0() ]..................................................0.39
> [ T046: f1( i ) ]...............................................0.55
> [ T047: f2( c[1...8] ) ]........................................0.70
> [ T048: f2( c[1...40000] ) ]....................................0.70
> [ T049: f2( @c[1...40000] ) ]...................................0.72
> [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.75
> [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................2.38
> [ T052: f2( a ) ]...............................................0.72
> [ T053: x := f4() ].............................................3.55
> [ T054: x := f5() ].............................................2.34
> [ T055: x := space(16) ]........................................1.98
> [ T056: f_prv( c ) ]............................................3.47
> ====================================================================
> [ total application time: ]...................................154.20
> [ total real time: ]..........................................156.17
>
>
> _______________________________________________
> Harbour mailing list
> [email protected]
> http://lists.harbour-project.org/mailman/listinfo/harbour
>
>
_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to