Przemek:

>2009-11-25 00:50 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
>  * harbour/src/vm/fm.c
>    * enabled HB_FM_DL_ALLOC by default in OS2 OpenWatcom builds
>
>  * harbour/config/os2/watcom.mk
>    ! enabled -bm flag (MT code) in OS2 OpenWatcom builds - now when
>      HB_FM_DL_ALLOC is enabled by default it should not kill the
>      performance. Please make tests with OS2 OpenWatcom builds.

>It's already done and Maurilio tested GCC builds.
>I would like to ask you to make test with OpenWatcom.
>Now DLMALLOC is enabled by default in OpenWatcom OS2 builds so
>it's enough to compile current Harbour SVN code and then check
>if default harbour tools work correctly.

In fact I was doing tests with Harbour 13006 - OpenWatcom while Maurilio reported hbmk2 failure and you and him started to fix it

Harbour 13006 - OpenWatcom-DHB_FM_DL_ALLOC was failing with hbmk2.exe too so I decided not to report until a newer changes

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
------------------------

for:

a) Rev. 13006 without  -DHB_FM_DL_ALLOC
b) Rev. 13015 without  -DHB_FM_DL_ALLOC, BUT ENABLED BY DEFAULT
c) Rev. 13015 with  -DHB_FM_DL_ALLOC, BUT ENABLED BY DEFAULT

As now "HB_FM_DL_ALLOC is enabled by default" then b) and c) should be equal and they mean two runs of same type

And now how HB_FM_DL_ALLOC can be disabled ?



And for --thread results, are you ready ... ?
they fail with GPF as before

When we stop tests with OS/2-Harbour-OpenWatcom 1.7a in December 2008 we left two pendings:

a) Use of -bm
MT require -bm but ST no, and using -bm doubled run time, so we were force to build an Harbour for ST (without -bm) and other Harbour for MT (with -bm)
 I see you are dealing with it now

b) Failure of --thread (--scale) with GPF
 OS/2-Harbour-OpenWatcom 1.7a was failing in MT with more than one thread
 I expected it was fixed with 1.8, but no
 As you may remember, cause was isolated until routines for devices input

 When you decide we can continue to fix it

David Macias



 ******* Start, Rev. 13006 without  -DHB_FM_DL_ALLOC *******

2009.11.24 07:36:22 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13006) 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.00
[ T002: x := L_N ]..............................................0.03
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.03
[ T006: x := S_D ]..............................................0.03
[ 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.00
[ T012: x := M->P_D ]...........................................0.00
[ T013: x := F_C ]..............................................0.13
[ 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.16
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.29
[ T022: dtos( d - i % 10000 ) ].................................0.29
[ T023: eval( { || i % 16 } ) ].................................0.29
[ T024: eval( bc := { || i % 16 } ) ]...........................0.13
[ T025: eval( { |x| x % 16 }, i ) ].............................0.23
[ 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.19
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.23
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.68
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................2.10
[ T032: x := valtype( x ) +  valtype( i ) ].....................0.32
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.52
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.16
[ 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.97
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.55
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.10
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.06
[ T047: f2( c[1...8] ) ]........................................0.06
[ T048: f2( c[1...40000] ) ]....................................0.03
[ T049: f2( @c[1...40000] ) ]...................................0.03
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.10
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.29
[ T052: f2( a ) ]...............................................0.06
[ T053: x := f4() ].............................................0.55
[ T054: x := f5() ].............................................0.16
[ T055: x := space(16) ]........................................0.13
[ T056: f_prv( c ) ]............................................0.23
====================================================================
[ total application time: ]....................................15.74
[ total real time: ]...........................................15.69

2009.11.24 07:36:42 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13006) (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.06
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.10
[ T008: x := M->M_N ]...........................................0.03
[ T009: x := M->M_D ]...........................................0.03
[ T010: x := M->P_C ]...........................................0.06
[ T011: x := M->P_N ]...........................................0.06
[ T012: x := M->P_D ]...........................................0.03
[ T013: x := F_C ]..............................................1.42
[ T014: x := F_N ]..............................................0.13
[ T015: x := F_D ]..............................................0.10
[ T016: x := o:Args ]...........................................0.16
[ T017: x := o[2] ].............................................0.13
[ T018: round( i / 1000, 2 ) ]..................................0.19
[ T019: str( i / 1000 ) ].......................................1.61
[ T020: val( s ) ]..............................................0.19
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.35
[ T022: dtos( d - i % 10000 ) ].................................1.55
[ T023: eval( { || i % 16 } ) ].................................2.84
[ T024: eval( bc := { || i % 16 } ) ]...........................0.19
[ T025: eval( { |x| x % 16 }, i ) ].............................1.52
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.23
[ T027: eval( { |x| f1( x ) }, i ) ]............................1.61
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.29
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.26
[ T030: x := &( "f1(" + str(i) + ")" ) ].......................10.68
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............13.81
[ T032: x := valtype( x ) +  valtype( i ) ].....................1.65
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........1.87
[ 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 } ) ].......................5.19
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....3.26
[ T043: x := a ]................................................0.06
[ T044: x := {} ]...............................................1.35
[ T045: f0() ]..................................................0.06
[ T046: f1( i ) ]...............................................0.10
[ T047: f2( c[1...8] ) ]........................................0.13
[ T048: f2( c[1...40000] ) ]....................................0.13
[ T049: f2( @c[1...40000] ) ]...................................0.06
[ 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() ].............................................1.94
[ T054: x := f5() ].............................................1.42
[ T055: x := space(16) ]........................................1.39
[ T056: f_prv( c ) ]............................................1.71
====================================================================
[ total application time: ]....................................62.94
[ total real time: ]...........................................62.99

2009.11.24 07:37:45 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13006) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86
THREADS: all->56
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.03
====================================================================
2009.11.24 07:37:45 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13006) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86
THREADS: 2
N_LOOPS: 1000000
1 th. 2 th. factor
============================================================================


 ******* End, Rev. 13006 without  -DHB_FM_DL_ALLOC *******



******* Start, Rev. 13015 without -DHB_FM_DL_ALLOC, BUT ENABLED BY DEFAULT *******

2009.11.24 22:54:47 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) 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.00
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.03
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.03
[ 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.16
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.26
[ T022: dtos( d - i % 10000 ) ].................................0.29
[ T023: eval( { || i % 16 } ) ].................................0.23
[ T024: eval( bc := { || i % 16 } ) ]...........................0.16
[ 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.19
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.23
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.74
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................2.03
[ 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.16
[ 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.94
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.48
[ T043: x := a ]................................................0.00
[ T044: x := {} ]...............................................0.06
[ T045: f0() ]..................................................0.06
[ 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.06
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.29
[ T052: f2( a ) ]...............................................0.06
[ T053: x := f4() ].............................................0.58
[ T054: x := f5() ].............................................0.16
[ T055: x := space(16) ]........................................0.10
[ T056: f_prv( c ) ]............................................0.23
====================================================================
[ total application time: ]....................................15.45
[ total real time: ]...........................................15.63

2009.11.24 22:55:07 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) (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.03
[ T004: x := S_C ]..............................................0.06
[ T005: x := S_N ]..............................................0.03
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.06
[ 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.03
[ T012: x := M->P_D ]...........................................0.06
[ T013: x := F_C ]..............................................0.16
[ T014: x := F_N ]..............................................0.16
[ 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.23
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.35
[ T022: dtos( d - i % 10000 ) ].................................0.39
[ T023: eval( { || i % 16 } ) ].................................0.45
[ 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.35
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.32
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................2.81
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................3.29
[ T032: x := valtype( x ) +  valtype( i ) ].....................0.39
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.65
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.32
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.35
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.32
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.35
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.35
[ 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.13
[ T048: f2( c[1...40000] ) ]....................................0.13
[ T049: f2( @c[1...40000] ) ]...................................0.10
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.16
[ 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.26
[ T055: x := space(16) ]........................................0.19
[ T056: f_prv( c ) ]............................................0.45
====================================================================
[ total application time: ]....................................23.55
[ total real time: ]...........................................23.85

2009.11.24 22:55:31 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86
THREADS: all->56
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.03
====================================================================
2009.11.24 22:55:31 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86
THREADS: 2
N_LOOPS: 1000000
1 th. 2 th. factor
============================================================================

******* End, Rev. 13015 without -DHB_FM_DL_ALLOC, BUT ENABLED BY DEFAULT *******



******* Start, Rev. 13015 with -DHB_FM_DL_ALLOC, AND ENABLED BY DEFAULT *******

2009.11.24 22:40:32 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) 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.03
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.03
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.00
[ T008: x := M->M_N ]...........................................0.00
[ 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.13
[ T014: x := F_N ]..............................................0.13
[ T015: x := F_D ]..............................................0.06
[ 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.16
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.26
[ T022: dtos( d - i % 10000 ) ].................................0.26
[ T023: eval( { || i % 16 } ) ].................................0.23
[ T024: eval( bc := { || i % 16 } ) ]...........................0.16
[ 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.19
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.19
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.74
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................2.00
[ T032: x := valtype( x ) +  valtype( i ) ].....................0.29
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.48
[ 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.94
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.52
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.06
[ T045: f0() ]..................................................0.03
[ T046: f1( i ) ]...............................................0.10
[ T047: f2( c[1...8] ) ]........................................0.06
[ T048: f2( c[1...40000] ) ]....................................0.06
[ T049: f2( @c[1...40000] ) ]...................................0.03
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.10
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.29
[ T052: f2( a ) ]...............................................0.06
[ T053: x := f4() ].............................................0.58
[ T054: x := f5() ].............................................0.13
[ T055: x := space(16) ]........................................0.10
[ T056: f_prv( c ) ]............................................0.19
====================================================================
[ total application time: ]....................................15.48
[ total real time: ]...........................................15.46

2009.11.24 22:40:53 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) (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.06
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.10
[ 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.16
[ T015: x := F_D ]..............................................0.06
[ T016: x := o:Args ]...........................................0.19
[ T017: x := o[2] ].............................................0.10
[ T018: round( i / 1000, 2 ) ]..................................0.23
[ T019: str( i / 1000 ) ].......................................0.45
[ T020: val( s ) ]..............................................0.23
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.39
[ T022: dtos( d - i % 10000 ) ].................................0.39
[ T023: eval( { || i % 16 } ) ].................................0.48
[ T024: eval( bc := { || i % 16 } ) ]...........................0.19
[ T025: eval( { |x| x % 16 }, i ) ].............................0.35
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.26
[ 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.29
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................2.81
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................3.26
[ T032: x := valtype( x ) +  valtype( i ) ].....................0.45
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.65
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.32
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.32
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.29
[ 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.29
[ T040: ascan( a, i % 16 ) ]....................................0.29
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................2.87
[ 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.10
[ T046: f1( i ) ]...............................................0.10
[ T047: f2( c[1...8] ) ]........................................0.16
[ T048: f2( c[1...40000] ) ]....................................0.16
[ T049: f2( @c[1...40000] ) ]...................................0.10
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.16
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.45
[ T052: f2( a ) ]...............................................0.16
[ T053: x := f4() ].............................................0.74
[ T054: x := f5() ].............................................0.26
[ T055: x := space(16) ]........................................0.23
[ T056: f_prv( c ) ]............................................0.48
====================================================================
[ total application time: ]....................................23.55
[ total real time: ]...........................................23.62

2009.11.24 22:41:17 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86
THREADS: all->56
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.03
====================================================================
2009.11.24 22:41:17 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13015) (MT)+ Open Watcom C++ 12.80.8 (32-bit) x86
THREADS: 2
N_LOOPS: 1000000
1 th. 2 th. factor
============================================================================

******* End, Rev. 13015 with -DHB_FM_DL_ALLOC, AND ENABLED BY DEFAULT *******




_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to