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)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour