On Tue, 31 Mar 2009, Szak�ts Viktor wrote: Hi,
> Can you upload them to some public host? > Sure: > http://www.syenar.hu/harbour/owst.zip I've just tested them with WINE on AMD Phenom(tm) 8450 Triple-Core 2100MHZ. Results below. Tomorrow I'll make tests with real Windows also with mixed version which uses stack calling convention for exported functions. BTW does harbour.dll works with current hbmk2 and OpenWatcom builds? best regards, Przemek speedtst-CFLAGS-6r.exe ====================== 03/31/09 22:27:51 Windows XP (Wine) 5.1.2600 Service Pack 2 Harbour 1.1.0dev (Rev. 10756) Open Watcom C++ 12.80.8 (32-bit) THREADS: 0 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.05 ==================================================================== [ T001: x := L_C ]..............................................0.03 [ T002: x := L_N ]..............................................0.02 [ T003: x := L_D ]..............................................0.03 [ T004: x := S_C ]..............................................0.05 [ T005: x := S_N ]..............................................0.04 [ T006: x := S_D ]..............................................0.04 [ T007: x := M->M_C ]...........................................0.05 [ T008: x := M->M_N ]...........................................0.04 [ T009: x := M->M_D ]...........................................0.05 [ T010: x := M->P_C ]...........................................0.05 [ T011: x := M->P_N ]...........................................0.04 [ T012: x := M->P_D ]...........................................0.05 [ T013: x := F_C ]..............................................0.13 [ T014: x := F_N ]..............................................0.23 [ T015: x := F_D ]..............................................0.14 [ T016: x := o:Args ]...........................................0.16 [ T017: x := o[2] ].............................................0.11 [ T018: round( i / 1000, 2 ) ]..................................0.27 [ T019: str( i / 1000 ) ].......................................0.64 [ T020: val( s ) ]..............................................0.25 [ T021: val( a [ i % 16 + 1 ] ) ]...............................0.45 [ T022: dtos( d - i % 10000 ) ].................................0.58 [ T023: eval( { || i % 16 } ) ].................................0.41 [ T024: eval( bc := { || i % 16 } ) ]...........................0.26 [ T025: eval( { |x| x % 16 }, i ) ].............................0.32 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.25 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.37 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.33 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.33 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................2.82 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................3.09 [ T032: x := valtype( x ) + valtype( i ) ].....................0.36 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.78 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.27 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.31 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.35 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.30 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.34 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.35 [ T040: ascan( a, i % 16 ) ]....................................0.33 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................3.19 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.77 [ T043: x := a ]................................................0.04 [ T044: x := {} ]...............................................0.08 [ T045: f0() ]..................................................0.08 [ T046: f1( i ) ]...............................................0.13 [ T047: f2( c[1...8] ) ]........................................0.12 [ T048: f2( c[1...40000] ) ]....................................0.12 [ T049: f2( @c[1...40000] ) ]...................................0.10 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.18 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.41 [ T052: f2( a ) ]...............................................0.12 [ T053: x := f4() ].............................................0.73 [ T054: x := f5() ].............................................0.25 [ T055: x := space(16) ]........................................0.22 [ T056: f_prv( c ) ]............................................0.34 ==================================================================== [ total application time: ]....................................24.71 [ total real time: ]...........................................24.72 speedtst.exe ============ 03/31/09 22:28:16 Windows XP (Wine) 5.1.2600 Service Pack 2 Harbour 1.1.0dev (Rev. 10748) Open Watcom C++ 12.80.8 (32-bit) THREADS: 0 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.07 ==================================================================== [ T001: x := L_C ]..............................................0.02 [ T002: x := L_N ]..............................................0.07 [ T003: x := L_D ]..............................................0.01 [ T004: x := S_C ]..............................................0.04 [ T005: x := S_N ]..............................................0.03 [ T006: x := S_D ]..............................................0.02 [ T007: x := M->M_C ]...........................................0.05 [ T008: x := M->M_N ]...........................................0.03 [ T009: x := M->M_D ]...........................................0.02 [ T010: x := M->P_C ]...........................................0.05 [ T011: x := M->P_N ]...........................................0.03 [ T012: x := M->P_D ]...........................................0.02 [ T013: x := F_C ]..............................................0.13 [ T014: x := F_N ]..............................................0.21 [ T015: x := F_D ]..............................................0.14 [ T016: x := o:Args ]...........................................0.16 [ T017: x := o[2] ].............................................0.10 [ T018: round( i / 1000, 2 ) ]..................................0.29 [ T019: str( i / 1000 ) ].......................................0.75 [ T020: val( s ) ]..............................................0.26 [ T021: val( a [ i % 16 + 1 ] ) ]...............................0.45 [ T022: dtos( d - i % 10000 ) ].................................0.61 [ T023: eval( { || i % 16 } ) ].................................0.38 [ T024: eval( bc := { || i % 16 } ) ]...........................0.26 [ T025: eval( { |x| x % 16 }, i ) ].............................0.33 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.28 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.40 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.34 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.34 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................2.63 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................3.23 [ T032: x := valtype( x ) + valtype( i ) ].....................0.40 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.85 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.31 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.39 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.38 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.39 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.38 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.38 [ T040: ascan( a, i % 16 ) ]....................................0.49 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................3.35 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.96 [ T043: x := a ]................................................0.03 [ T044: x := {} ]...............................................0.08 [ T045: f0() ]..................................................0.11 [ T046: f1( i ) ]...............................................0.12 [ T047: f2( c[1...8] ) ]........................................0.12 [ T048: f2( c[1...40000] ) ]....................................0.12 [ T049: f2( @c[1...40000] ) ]...................................0.09 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.13 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.51 [ T052: f2( a ) ]...............................................0.12 [ T053: x := f4() ].............................................0.77 [ T054: x := f5() ].............................................0.23 [ T055: x := space(16) ]........................................0.17 [ T056: f_prv( c ) ]............................................0.37 ==================================================================== [ total application time: ]....................................26.86 [ total real time: ]...........................................26.87 speedtstmt-CFLAGS-6r.exe ======================== 03/31/09 22:28:43 Windows XP (Wine) 5.1.2600 Service Pack 2 Harbour 1.1.0dev (Rev. 10756) (MT) Open Watcom C++ 12.80.8 (32-bit) THREADS: 0 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.05 ==================================================================== [ T001: x := L_C ]..............................................0.09 [ T002: x := L_N ]..............................................0.05 [ T003: x := L_D ]..............................................0.05 [ T004: x := S_C ]..............................................0.10 [ T005: x := S_N ]..............................................0.07 [ T006: x := S_D ]..............................................0.07 [ T007: x := M->M_C ]...........................................0.11 [ T008: x := M->M_N ]...........................................0.09 [ T009: x := M->M_D ]...........................................0.09 [ T010: x := M->P_C ]...........................................0.12 [ T011: x := M->P_N ]...........................................0.09 [ T012: x := M->P_D ]...........................................0.08 [ T013: x := F_C ]..............................................0.21 [ T014: x := F_N ]..............................................0.27 [ T015: x := F_D ]..............................................0.18 [ T016: x := o:Args ]...........................................0.29 [ T017: x := o[2] ].............................................0.18 [ T018: round( i / 1000, 2 ) ]..................................0.43 [ T019: str( i / 1000 ) ].......................................0.83 [ T020: val( s ) ]..............................................0.39 [ T021: val( a [ i % 16 + 1 ] ) ]...............................0.66 [ T022: dtos( d - i % 10000 ) ].................................0.82 [ T023: eval( { || i % 16 } ) ].................................0.72 [ T024: eval( bc := { || i % 16 } ) ]...........................0.44 [ T025: eval( { |x| x % 16 }, i ) ].............................0.59 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.44 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.74 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.59 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.61 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................3.40 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................4.28 [ T032: x := valtype( x ) + valtype( i ) ].....................0.64 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........1.15 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.46 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.50 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.50 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.51 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.49 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.49 [ T040: ascan( a, i % 16 ) ]....................................0.59 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................5.21 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....1.31 [ T043: x := a ]................................................0.09 [ T044: x := {} ]...............................................0.20 [ T045: f0() ]..................................................0.18 [ T046: f1( i ) ]...............................................0.24 [ T047: f2( c[1...8] ) ]........................................0.30 [ T048: f2( c[1...40000] ) ]....................................0.26 [ T049: f2( @c[1...40000] ) ]...................................0.22 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.30 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.64 [ T052: f2( a ) ]...............................................0.33 [ T053: x := f4() ].............................................1.03 [ T054: x := f5() ].............................................0.52 [ T055: x := space(16) ]........................................0.43 [ T056: f_prv( c ) ]............................................0.81 ==================================================================== [ total application time: ]....................................37.30 [ total real time: ]...........................................37.32 speedtstmt.exe ============== 03/31/09 22:29:21 Windows XP (Wine) 5.1.2600 Service Pack 2 Harbour 1.1.0dev (Rev. 10748) (MT) Open Watcom C++ 12.80.8 (32-bit) THREADS: 0 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.08 ==================================================================== [ T001: x := L_C ]..............................................0.05 [ T002: x := L_N ]..............................................0.02 [ T003: x := L_D ]..............................................0.02 [ T004: x := S_C ]..............................................0.07 [ T005: x := S_N ]..............................................0.03 [ T006: x := S_D ]..............................................0.04 [ T007: x := M->M_C ]...........................................0.08 [ T008: x := M->M_N ]...........................................0.05 [ T009: x := M->M_D ]...........................................0.06 [ T010: x := M->P_C ]...........................................0.08 [ T011: x := M->P_N ]...........................................0.06 [ T012: x := M->P_D ]...........................................0.05 [ T013: x := F_C ]..............................................0.18 [ T014: x := F_N ]..............................................0.23 [ T015: x := F_D ]..............................................0.16 [ T016: x := o:Args ]...........................................0.26 [ T017: x := o[2] ].............................................0.14 [ T018: round( i / 1000, 2 ) ]..................................0.42 [ T019: str( i / 1000 ) ].......................................0.91 [ T020: val( s ) ]..............................................0.35 [ T021: val( a [ i % 16 + 1 ] ) ]...............................0.67 [ T022: dtos( d - i % 10000 ) ].................................0.79 [ T023: eval( { || i % 16 } ) ].................................0.71 [ T024: eval( bc := { || i % 16 } ) ]...........................0.43 [ T025: eval( { |x| x % 16 }, i ) ].............................0.57 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.43 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.70 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.60 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.56 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................3.53 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................5.05 [ T032: x := valtype( x ) + valtype( i ) ].....................0.61 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........1.18 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.43 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.53 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.48 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.48 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.47 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.52 [ T040: ascan( a, i % 16 ) ]....................................0.67 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................5.31 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....1.31 [ T043: x := a ]................................................0.05 [ T044: x := {} ]...............................................0.19 [ T045: f0() ]..................................................0.13 [ T046: f1( i ) ]...............................................0.19 [ T047: f2( c[1...8] ) ]........................................0.21 [ T048: f2( c[1...40000] ) ]....................................0.21 [ T049: f2( @c[1...40000] ) ]...................................0.17 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.29 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.63 [ T052: f2( a ) ]...............................................0.21 [ T053: x := f4() ].............................................0.98 [ T054: x := f5() ].............................................0.44 [ T055: x := space(16) ]........................................0.32 [ T056: f_prv( c ) ]............................................0.79 ==================================================================== [ total application time: ]....................................38.59 [ total real time: ]...........................................38.62 _______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
