Przemek:
Yes, I want you add it to src/rtl/gtos2/Makefile at line 5
Sorry, I confused "add" with "change"
I used: set HB_BUILD_OPTIM=no
and what you have recompiled later and how? Sorry that I'm asking but I have to be sure what exactly was done. Many thanks for your tests.
Fresh SVN, set HB_BUILD_OPTIM=no, build entire Harbour, apply tests Now below are tests with only src\rtl\gtos2\Makefile adding: HB_BUILD_OPTIM := no Tests with speedtst.exe --thread ... does not fail with GPF Below are results using: ------------------------ hbmk2 -m -n -w -es2 -l -kmo -gc3 speedtst.prg speedtst.exe hbmk2 -m -n -w -es2 -l -kmo -gc3 -mt speedtst.prg speedtst.exe speedtst.exe --thread speedtst.exe --thread=2 --scale ------------------------ David Macias 2009.12.02 05:30:38 OS/2 4.50 Harbour 2.0.0beta3 (Rev. 13082) Open Watcom C++ 12.80.8 (32-bit) x86 THREADS: 0 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.03 ==================================================================== [ T001: x := L_C ]..............................................0.03 [ T002: x := L_N ]..............................................0.00 [ T003: x := L_D ]..............................................0.03 [ T004: x := S_C ]..............................................0.03 [ T005: x := S_N ]..............................................0.03 [ T006: x := S_D ]..............................................0.00 [ T007: x := M->M_C ]...........................................0.03 [ T008: x := M->M_N ]...........................................0.03 [ T009: x := M->M_D ]...........................................0.03 [ T010: x := M->P_C ]...........................................0.03 [ T011: x := M->P_N ]...........................................0.03 [ T012: x := M->P_D ]...........................................0.03 [ T013: x := F_C ]..............................................0.10 [ T014: x := F_N ]..............................................0.13 [ T015: x := F_D ]..............................................0.10 [ T016: x := o:Args ]...........................................0.10 [ T017: x := o[2] ].............................................0.06 [ T018: round( i / 1000, 2 ) ]..................................0.16 [ T019: str( i / 1000 ) ].......................................0.39 [ T020: val( s ) ]..............................................0.13 [ T021: val( a [ i % 16 + 1 ] ) ]...............................0.23 [ T022: dtos( d - i % 10000 ) ].................................0.29 [ T023: eval( { || i % 16 } ) ].................................0.23 [ T024: eval( bc := { || i % 16 } ) ]...........................0.13 [ T025: eval( { |x| x % 16 }, i ) ].............................0.19 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.16 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.23 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.23 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.19 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.81 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................1.97 [ T032: x := valtype( x ) + valtype( i ) ].....................0.29 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.45 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.19 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.19 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.19 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.19 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.19 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.19 [ T040: ascan( a, i % 16 ) ]....................................0.19 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................1.87 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.52 [ T043: x := a ]................................................0.00 [ T044: x := {} ]...............................................0.06 [ T045: f0() ]..................................................0.03 [ T046: f1( i ) ]...............................................0.06 [ T047: f2( c[1...8] ) ]........................................0.06 [ T048: f2( c[1...40000] ) ]....................................0.06 [ T049: f2( @c[1...40000] ) ]...................................0.06 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.10 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.26 [ T052: f2( a ) ]...............................................0.06 [ T053: x := f4() ].............................................0.61 [ T054: x := f5() ].............................................0.13 [ T055: x := space(16) ]........................................0.10 [ T056: f_prv( c ) ]............................................0.23 ==================================================================== [ total application time: ]....................................15.35 [ total real time: ]...........................................15.31 2009.12.02 05:30:58 OS/2 4.50 Harbour 2.0.0beta3 (Rev. 13082) (MT) Open Watcom C++ 12.80.8 (32-bit) x86 THREADS: 0 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.03 ==================================================================== [ T001: x := L_C ]..............................................0.06 [ T002: x := L_N ]..............................................0.03 [ T003: x := L_D ]..............................................0.00 [ T004: x := S_C ]..............................................0.10 [ T005: x := S_N ]..............................................0.03 [ T006: x := S_D ]..............................................0.00 [ T007: x := M->M_C ]...........................................0.06 [ T008: x := M->M_N ]...........................................0.03 [ T009: x := M->M_D ]...........................................0.03 [ T010: x := M->P_C ]...........................................0.10 [ T011: x := M->P_N ]...........................................0.03 [ T012: x := M->P_D ]...........................................0.03 [ T013: x := F_C ]..............................................0.19 [ T014: x := F_N ]..............................................0.13 [ T015: x := F_D ]..............................................0.10 [ T016: x := o:Args ]...........................................0.16 [ T017: x := o[2] ].............................................0.10 [ T018: round( i / 1000, 2 ) ]..................................0.19 [ T019: str( i / 1000 ) ].......................................0.45 [ T020: val( s ) ]..............................................0.19 [ T021: val( a [ i % 16 + 1 ] ) ]...............................0.35 [ T022: dtos( d - i % 10000 ) ].................................0.35 [ T023: eval( { || i % 16 } ) ].................................0.48 [ T024: eval( bc := { || i % 16 } ) ]...........................0.23 [ T025: eval( { |x| x % 16 }, i ) ].............................0.35 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.23 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.42 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.29 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.32 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................3.03 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................3.29 [ T032: x := valtype( x ) + valtype( i ) ].....................0.42 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.68 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.29 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.32 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.32 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.32 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.32 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.32 [ T040: ascan( a, i % 16 ) ]....................................0.29 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................3.00 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.94 [ T043: x := a ]................................................0.06 [ T044: x := {} ]...............................................0.16 [ T045: f0() ]..................................................0.06 [ T046: f1( i ) ]...............................................0.10 [ T047: f2( c[1...8] ) ]........................................0.10 [ T048: f2( c[1...40000] ) ]....................................0.13 [ T049: f2( @c[1...40000] ) ]...................................0.10 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.13 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.45 [ T052: f2( a ) ]...............................................0.13 [ T053: x := f4() ].............................................0.68 [ T054: x := f5() ].............................................0.23 [ T055: x := space(16) ]........................................0.19 [ T056: f_prv( c ) ]............................................0.45 ==================================================================== [ total application time: ]....................................23.52 [ total real time: ]...........................................23.54 2009.12.02 05:31:22 OS/2 4.50 Harbour 2.0.0beta3 (Rev. 13082) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86 THREADS: all->56 N_LOOPS: 1000000 [ T000: empty loop overhead ]...................................0.03 ==================================================================== [ T001: x := L_C ]..............................................0.10 [ T002: x := L_N ]..............................................0.00 [ T003: x := L_D ]..............................................0.03 [ T004: x := S_C ]..............................................0.06 [ T005: x := S_N ]..............................................0.10 [ T006: x := S_D ]..............................................0.00 [ T007: x := M->M_C ]...........................................0.13 [ T008: x := M->M_N ]...........................................0.06 [ T009: x := M->M_D ]...........................................0.03 [ T010: x := M->P_C ]...........................................0.06 [ T011: x := M->P_N ]...........................................0.16 [ T012: x := M->P_D ]...........................................0.00 [ T013: x := F_C ]..............................................0.48 [ T014: x := F_N ]..............................................0.61 [ T015: x := F_D ]..............................................0.29 [ T016: x := o:Args ]...........................................0.45 [ T017: x := o[2] ].............................................0.42 [ T018: round( i / 1000, 2 ) ]..................................0.03 [ T019: str( i / 1000 ) ].......................................1.03 [ T020: val( s ) ]..............................................0.35 [ T021: val( a [ i % 16 + 1 ] ) ]...............................1.13 [ T022: dtos( d - i % 10000 ) ].................................1.10 [ T023: eval( { || i % 16 } ) ].................................0.65 [ T024: eval( bc := { || i % 16 } ) ]...........................0.23 [ T025: eval( { |x| x % 16 }, i ) ].............................0.84 [ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.00 [ T027: eval( { |x| f1( x ) }, i ) ]............................0.10 [ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.52 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.00 [ T030: x := &( "f1(" + str(i) + ")" ) ]........................5.16 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................2.35 [ T032: x := valtype( x ) + valtype( i ) ].....................0.39 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........1.03 [ T034: x := a[ i % 16 + 1 ] == s ].............................0.35 [ T035: x := a[ i % 16 + 1 ] = s ]..............................0.13 [ T036: x := a[ i % 16 + 1 ] >= s ].............................0.00 [ T037: x := a[ i % 16 + 1 ] <= s ].............................0.00 [ T038: x := a[ i % 16 + 1 ] < s ]..............................0.45 [ T039: x := a[ i % 16 + 1 ] > s ]..............................0.03 [ T040: ascan( a, i % 16 ) ]....................................0.00 [ T041: ascan( a, { |x| x == i % 16 } ) ].......................2.45 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....2.16 [ T043: x := a ]................................................0.23 [ T044: x := {} ]...............................................0.26 [ T045: f0() ]..................................................0.26 [ T046: f1( i ) ]...............................................0.35 [ T047: f2( c[1...8] ) ]........................................0.35 [ T048: f2( c[1...40000] ) ]....................................0.00 [ T049: f2( @c[1...40000] ) ]...................................0.13 [ T050: f2( @c[1...40000] ), c2 := c ]..........................0.29 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.90 [ T052: f2( a ) ]...............................................0.55 [ T053: x := f4() ].............................................0.94 [ T054: x := f5() ].............................................0.65 [ T055: x := space(16) ]........................................0.55 [ T056: f_prv( c ) ]............................................0.71 ==================================================================== [ total application time: ].....................................0.16 [ total real time: ]...........................................23.54 2009.12.02 05:31:45 OS/2 4.50 Harbour 2.0.0beta3 (Rev. 13082) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86 THREADS: 2 N_LOOPS: 1000000 1 th. 2 th. factor ============================================================================ [ T001: x := L_C ]____________________________________ 0.20 0.20 -> 1.00 [ T002: x := L_N ]____________________________________ 0.11 0.13 -> 0.85 [ T003: x := L_D ]____________________________________ 0.10 0.12 -> 0.83 [ T004: x := S_C ]____________________________________ 0.22 0.20 -> 1.10 [ T005: x := S_N ]____________________________________ 0.16 0.13 -> 1.23 [ T006: x := S_D ]____________________________________ 0.16 0.13 -> 1.23 [ T007: x := M->M_C ]_________________________________ 0.24 0.25 -> 0.96 [ T008: x := M->M_N ]_________________________________ 0.15 0.14 -> 1.07 [ T009: x := M->M_D ]_________________________________ 0.13 0.14 -> 0.93 [ T010: x := M->P_C ]_________________________________ 0.18 0.18 -> 1.00 [ T011: x := M->P_N ]_________________________________ 0.14 0.14 -> 1.00 [ T012: x := M->P_D ]_________________________________ 0.13 0.14 -> 0.93 [ T013: x := F_C ]____________________________________ 0.42 0.43 -> 0.98 [ T014: x := F_N ]____________________________________ 0.35 0.36 -> 0.97 [ T015: x := F_D ]____________________________________ 0.22 0.22 -> 1.00 [ T016: x := o:Args ]_________________________________ 0.40 0.41 -> 0.98 [ T017: x := o[2] ]___________________________________ 0.32 0.31 -> 1.03 [ T018: round( i / 1000, 2 ) ]________________________ 0.47 0.46 -> 1.02 [ T019: str( i / 1000 ) ]_____________________________ 0.97 0.97 -> 1.00 [ T020: val( s ) ]____________________________________ 0.48 0.49 -> 0.98 [ T021: val( a [ i % 16 + 1 ] ) ]_____________________ 0.77 0.77 -> 1.00 [ T022: dtos( d - i % 10000 ) ]_______________________ 0.80 0.80 -> 1.00 [ T023: eval( { || i % 16 } ) ]_______________________ 0.97 0.97 -> 1.00 [ T024: eval( bc := { || i % 16 } ) ]_________________ 0.47 0.48 -> 0.98 [ T025: eval( { |x| x % 16 }, i ) ]___________________ 0.74 0.73 -> 1.01 [ T026: eval( bc := { |x| x % 16 }, i ) ]_____________ 0.52 0.58 -> 0.90 [ T027: eval( { |x| f1( x ) }, i ) ]__________________ 0.85 0.82 -> 1.04 [ T028: eval( bc := { |x| f1( x ) }, i ) ]____________ 0.62 0.62 -> 1.00 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ]_______ 0.62 0.62 -> 1.00 [ T030: x := &( "f1(" + str(i) + ")" ) ]______________ 6.24 6.63 -> 0.94 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]______ 6.75 7.15 -> 0.94 [ T032: x := valtype( x ) + valtype( i ) ]___________ 0.88 0.89 -> 0.99 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ] 1.37 1.37 -> 1.00 [ T034: x := a[ i % 16 + 1 ] == s ]___________________ 0.67 0.66 -> 1.02 [ T035: x := a[ i % 16 + 1 ] = s ]____________________ 0.70 0.71 -> 0.99 [ T036: x := a[ i % 16 + 1 ] >= s ]___________________ 0.70 0.70 -> 1.00 [ T037: x := a[ i % 16 + 1 ] <= s ]___________________ 0.70 0.70 -> 1.00 [ T038: x := a[ i % 16 + 1 ] < s ]____________________ 0.70 0.69 -> 1.01 [ T039: x := a[ i % 16 + 1 ] > s ]____________________ 0.70 0.70 -> 1.00 [ T040: ascan( a, i % 16 ) ]__________________________ 0.61 0.61 -> 1.00 [ T041: ascan( a, { |x| x == i % 16 } ) ]_____________ 5.73 5.72 -> 1.00 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s ] 1.87 1.86 -> 1.01 [ T043: x := a ]______________________________________ 0.19 0.20 -> 0.95 [ T044: x := {} ]_____________________________________ 0.39 0.39 -> 1.00 [ T045: f0() ]________________________________________ 0.17 0.18 -> 0.94 [ T046: f1( i ) ]_____________________________________ 0.24 0.25 -> 0.96 [ T047: f2( c[1...8] ) ]______________________________ 0.31 0.31 -> 1.00 [ T048: f2( c[1...40000] ) ]__________________________ 0.30 0.31 -> 0.97 [ T049: f2( @c[1...40000] ) ]_________________________ 0.21 0.21 -> 1.00 [ T050: f2( @c[1...40000] ), c2 := c ]________________ 0.34 0.33 -> 1.03 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]__________ 0.94 0.94 -> 1.00 [ T052: f2( a ) ]_____________________________________ 0.32 0.31 -> 1.03 [ T053: x := f4() ]___________________________________ 1.41 1.42 -> 0.99 [ T054: x := f5() ]___________________________________ 0.54 0.54 -> 1.00 [ T055: x := space(16) ]______________________________ 0.44 0.44 -> 1.00 [ T056: f_prv( c ) ]__________________________________ 0.97 0.96 -> 1.01 ============================================================================ [ TOTAL ]_________________________________________ 46.30 47.12 -> 0.98 ============================================================================ [ total application time: ].....................................0.16 [ total real time: ]...........................................93.64 as comparison: gcc335, OMF type, with -DHB_FM_DL_ALLOC [ total application time: ]....................................16.48 [ total real time: ]...........................................16.46 [ total application time: ]....................................23.19 [ total real time: ]...........................................23.23 [ total application time: ].....................................0.10 [ total real time: ]...........................................22.15 [ total application time: ].....................................0.06 [ total real time: ]...........................................87.19 _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour