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
