Hi Mike, Yes, I know. For comparison, I've made the Harbour test run in MT mode, too, first with no threads, then with 2 threads.
I'm interested to see the conclusions (not necessarily from my results). Brgds, Viktor 2009/3/16 Mike Evans (Gmail) <[email protected]> > Hi Viktor, > > As far as I know Xbase++ is always executed in MT mode cause at least the > GC is executed in a different Thread. > > > > Brgds > > Mike Evans > > > > *From:* [email protected] [mailto: > [email protected]] *On Behalf Of *Viktor Szakats > *Sent:* Monday, March 16, 2009 9:21 PM > *To:* Harbour Project Main Developer List. > *Subject:* Re: [Harbour] Re: Question to xBase++ users > > > > with 2 threads (The Harbour results look this weird on every run): > > > > 03/16/2009 20:08:01 Windows XP 05.01 Build 02600 Service Pack 3 > > Xbase++ (R) Version 1.90 (MT)+ > > THREADS: 2 > > 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.00 > > [ T004: x := S_C ]..............................................0.08 > > [ T005: x := S_N ]..............................................0.05 > > [ T006: x := S_D ]..............................................0.05 > > [ T007: x := M_C ]..............................................0.23 > > [ T008: x := M_N ]..............................................0.19 > > [ T009: x := M_D ]..............................................0.19 > > [ T010: x := P_C ]..............................................0.25 > > [ T011: x := P_N ]..............................................0.19 > > [ T012: x := P_D ]..............................................0.19 > > [ T013: x := F_C ]..............................................0.39 > > [ T014: x := F_N ]..............................................0.32 > > [ T015: x := F_D ]..............................................0.33 > > [ T016: x := o:Args ]...........................................0.22 > > [ T017: x := o:Args ]...........................................0.23 > > [ T018: round( i / 1000, 2 ) ]..................................1.60 > > [ T019: str( i / 1000 ) ]......................................10.00 > > [ T020: val( s ) ]..............................................0.45 > > [ T021: val( a [ i % 16 + 1 ] ) ]...............................1.11 > > [ T022: dtos( d - i % 10000 ) ].................................1.52 > > [ T023: eval( { || i % 16 } ) ].................................1.56 > > [ T024: eval( bc := { || i % 16 } ) ]...........................0.96 > > [ T025: eval( { |x| x % 16 }, i ) ].............................0.67 > > [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.53 > > [ T027: eval( { |x| f1( x ) }, i ) ]............................0.85 > > [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.73 > > [ T029: x := &( "f1(" + str(i) + ")" ) ].......................25.36 > > [ T030: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............25.38 > > [ T031: x := valtype( x ) + valtype( i ) ].....................0.42 > > [ T032: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ].........10.27 > > [ T033: x := a[ i % 16 + 1 ] == s ].............................0.41 > > [ T034: x := a[ i % 16 + 1 ] = s ]..............................0.58 > > [ T035: x := a[ i % 16 + 1 ] >= s ].............................0.58 > > [ T036: x := a[ i % 16 + 1 ] <= s ].............................0.59 > > [ T037: x := a[ i % 16 + 1 ] < s ]..............................0.58 > > [ T038: x := a[ i % 16 + 1 ] > s ]..............................0.60 > > [ T039: ascan( a, i % 16 ) ]....................................1.00 > > [ T040: ascan( a, { |x| x == i % 16 } ) ].......................7.34 > > [ T041: iif( i%1000==0, a:={}, ), aadd(a,{i,1,.t.,s,s2,a2, ]....9.02 > > [ T042: x := a ]................................................0.03 > > [ T043: x := {} ]...............................................0.46 > > [ T044: f0() ]..................................................0.22 > > [ T045: f1( i ) ]...............................................0.22 > > [ T046: f2( c[1...8] ) ]........................................0.26 > > [ 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.35 > > [ T051: f2( a ) ]...............................................0.17 > > [ T052: x := f4() ].............................................1.47 > > [ T053: x := f5() ].............................................0.59 > > [ T054: x := space(16) ]........................................0.41 > > [ T055: f_prv( c ) ]............................................0.66 > > ==================================================================== > > [ total application time: ]...................................112.27 > > [ total real time: ]..........................................112.27 > > > > > > 03/16/09 20:06:19 Windows XP 5.1.2600 Service Pack 3 > > Harbour 1.1.0dev (Rev. 10601) (MT)+ Microsoft Visual C 14.0.24999 (32-bit) > > THREADS: 2 > > N_LOOPS: 1000000 > > [ T000: empty loop overhead ]...................................0.05 > > ==================================================================== > > [ T001: x := L_C ]..............................................0.84 > > [ T002: x := L_N ]..............................................0.38 > > [ T003: x := L_D ]..............................................0.36 > > [ T004: x := S_C ]..............................................1.02 > > [ T005: x := S_N ]..............................................0.45 > > [ T006: x := S_D ]..............................................0.48 > > [ T007: x := M_C ]..............................................1.28 > > [ T008: x := M_N ]..............................................0.66 > > [ T009: x := M_D ]..............................................0.70 > > [ T010: x := P_C ]..............................................1.27 > > [ T011: x := P_N ]..............................................0.61 > > [ T012: x := P_D ]..............................................0.64 > > [ T013: x := F_C ]..............................................2.03 > > [ T014: x := F_N ]..............................................1.61 > > [ T015: x := F_D ]..............................................1.03 > > [ T016: x := o:Args ]...........................................1.70 > > [ T017: x := o[2] ].............................................1.25 > > [ T018: round( i / 1000, 2 ) ]..................................1.44 > > [ T019: str( i / 1000 ) ].......................................3.94 > > [ T020: val( s ) ]..............................................2.28 > > [ T021: val( a [ i % 16 + 1 ] ) ]...............................3.72 > > [ T022: dtos( d - i % 10000 ) ].................................3.78 > > [ T023: eval( { || i % 16 } ) ].................................6.50 > > [ T024: eval( bc := { || i % 16 } ) ]...........................2.39 > > [ T025: eval( { |x| x % 16 }, i ) ].............................4.50 > > [ T026: eval( bc := { |x| x % 16 }, i ) ].......................2.36 > > [ T027: eval( { |x| f1( x ) }, i ) ]............................4.31 > > [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................2.59 > > [ T029: x := &( "f1(" + str(i) + ")" ) ].......................43.30 > > [ T030: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............47.59 > > [ T031: x := valtype( x ) + valtype( i ) ].....................4.48 > > [ T032: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........5.94 > > [ T033: x := a[ i % 16 + 1 ] == s ].............................2.75 > > [ T034: x := a[ i % 16 + 1 ] = s ]..............................3.00 > > [ T035: x := a[ i % 16 + 1 ] >= s ].............................3.20 > > [ T036: x := a[ i % 16 + 1 ] <= s ].............................3.20 > > [ T037: x := a[ i % 16 + 1 ] < s ]..............................3.17 > > [ T038: x := a[ i % 16 + 1 ] > s ]..............................3.20 > > [ T039: ascan( a, i % 16 ) ]....................................2.11 > > [ T040: ascan( a, { |x| x == i % 16 } ) ]......................22.83 > > [ T041: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....8.27 > > [ T042: x := a ]................................................0.59 > > [ T043: x := {} ]...............................................2.19 > > [ T044: f0() ]..................................................0.56 > > [ T045: f1( i ) ]...............................................0.78 > > [ T046: f2( c[1...8] ) ]........................................1.05 > > [ T047: f2( c[1...40000] ) ]....................................1.05 > > [ T048: f2( @c[1...40000] ) ]...................................1.00 > > [ T049: f2( @c[1...40000] ), c2 := c ]..........................1.19 > > [ T050: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................2.98 > > [ T051: f2( a ) ]...............................................1.08 > > [ T052: x := f4() ].............................................7.08 > > [ T053: x := f5() ].............................................2.64 > > [ T054: x := space(16) ]........................................2.61 > > [ T055: f_prv( c ) ]............................................2.08 > > ==================================================================== > > [ total application time: ]...................................118.78 > > [ total real time: ]...........................................61.03 > > > > _______________________________________________ > 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
