Przemyslaw,
dlmalloc makes a BIG difference, really outstanding, to the point that in MT
mode, without it, there is no advantage in going MT!
Here are the result of OS/2 with GCC, each file has the output of:
speedtst in st mode
speedtst in mt mode
speedtst --thread
speedtst --thread=2 --scale.
spdt.txt is without dlmalloc; spdt-dl.txt is with dlmalloc.
They were collected on a dual core laptop with a centrino duo.
Thanks so much for porting dlmalloc to OS/2.
Maurilio.
--
__________
| | | |__| Maurilio Longo
|_|_|_|____| farmaconsult s.r.l.
2009.11.25 00:29:35 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) EMX GNU C 3.3.5 (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.00
[ T004: x := S_C ]..............................................0.00
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.00
[ T007: x := M->M_C ]...........................................0.00
[ T008: x := M->M_N ]...........................................0.00
[ T009: x := M->M_D ]...........................................0.00
[ T010: x := M->P_C ]...........................................0.00
[ T011: x := M->P_N ]...........................................0.00
[ T012: x := M->P_D ]...........................................0.00
[ T013: x := F_C ]..............................................0.00
[ T014: x := F_N ]..............................................0.00
[ T015: x := F_D ]..............................................0.00
[ T016: x := o:Args ]...........................................0.00
[ T017: x := o[2] ].............................................0.00
[ T018: round( i / 1000, 2 ) ]..................................0.00
[ T019: str( i / 1000 ) ].......................................0.13
[ T020: val( s ) ]..............................................0.00
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.06
[ T022: dtos( d - i % 10000 ) ].................................0.00
[ T023: eval( { || i % 16 } ) ].................................0.10
[ T024: eval( bc := { || i % 16 } ) ]...........................0.00
[ T025: eval( { |x| x % 16 }, i ) ].............................0.03
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.00
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.00
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.00
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.00
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................0.39
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................0.52
[ T032: x := valtype( x ) + valtype( i ) ].....................0.13
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.06
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.00
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.00
[ 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.00
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.00
[ T040: ascan( a, i % 16 ) ]....................................0.00
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................0.39
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.03
[ T043: x := a ]................................................0.00
[ T044: x := {} ]...............................................0.00
[ T045: f0() ]..................................................0.00
[ T046: f1( i ) ]...............................................0.00
[ T047: f2( c[1...8] ) ]........................................0.00
[ T048: f2( c[1...40000] ) ]....................................0.00
[ T049: f2( @c[1...40000] ) ]...................................0.00
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.00
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.03
[ T052: f2( a ) ]...............................................0.00
[ T053: x := f4() ].............................................0.13
[ T054: x := f5() ].............................................0.00
[ T055: x := space(16) ]........................................0.00
[ T056: f_prv( c ) ]............................................0.29
====================================================================
[ total application time: ].....................................3.23
[ total real time: ]...........................................29.78
2009.11.25 00:30:36 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) (MT) EMX GNU C 3.3.5 (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.00
[ T004: x := S_C ]..............................................0.00
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.00
[ T007: x := M->M_C ]...........................................0.00
[ T008: x := M->M_N ]...........................................0.00
[ T009: x := M->M_D ]...........................................0.00
[ T010: x := M->P_C ]...........................................0.00
[ T011: x := M->P_N ]...........................................0.00
[ T012: x := M->P_D ]...........................................0.00
[ T013: x := F_C ]..............................................0.03
[ T014: x := F_N ]..............................................0.00
[ T015: x := F_D ]..............................................0.00
[ T016: x := o:Args ]...........................................0.00
[ T017: x := o[2] ].............................................0.03
[ T018: round( i / 1000, 2 ) ]..................................0.10
[ T019: str( i / 1000 ) ].......................................0.00
[ T020: val( s ) ]..............................................0.06
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.00
[ T022: dtos( d - i % 10000 ) ].................................0.00
[ T023: eval( { || i % 16 } ) ].................................0.10
[ T024: eval( bc := { || i % 16 } ) ]...........................0.00
[ T025: eval( { |x| x % 16 }, i ) ].............................0.10
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.00
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.00
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.03
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.00
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................0.87
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................0.61
[ T032: x := valtype( x ) + valtype( i ) ].....................0.06
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.03
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.06
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.03
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.06
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.00
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.06
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.03
[ T040: ascan( a, i % 16 ) ]....................................0.03
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................0.42
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.23
[ T043: x := a ]................................................0.00
[ T044: x := {} ]...............................................0.00
[ T045: f0() ]..................................................0.00
[ T046: f1( i ) ]...............................................0.03
[ T047: f2( c[1...8] ) ]........................................0.00
[ T048: f2( c[1...40000] ) ]....................................0.00
[ T049: f2( @c[1...40000] ) ]...................................0.00
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.00
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.16
[ T052: f2( a ) ]...............................................0.10
[ T053: x := f4() ].............................................0.10
[ T054: x := f5() ].............................................0.00
[ T055: x := space(16) ]........................................0.00
[ T056: f_prv( c ) ]............................................0.00
====================================================================
[ total application time: ].....................................4.42
[ total real time: ]...........................................40.78
2009.11.25 00:31:36 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) (MT)+ EMX GNU C 3.3.5 (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 ]..............................................2.55
[ T003: x := L_D ]..............................................2.55
[ T004: x := S_C ]..............................................2.23
[ T005: x := S_N ]..............................................2.65
[ T006: x := S_D ]..............................................2.55
[ T007: x := M->M_C ]...........................................4.00
[ T008: x := M->M_N ]...........................................1.35
[ T009: x := M->M_D ]...........................................0.06
[ T010: x := M->P_C ]...........................................2.19
[ T011: x := M->P_N ]...........................................2.13
[ T012: x := M->P_D ]...........................................1.68
[ T013: x := F_C ]..............................................5.13
[ T014: x := F_N ]..............................................3.06
[ T015: x := F_D ]..............................................1.74
[ T016: x := o:Args ]...........................................3.68
[ T017: x := o[2] ].............................................3.74
[ T018: round( i / 1000, 2 ) ]..................................3.13
[ T019: str( i / 1000 ) ].......................................5.87
[ T020: val( s ) ]..............................................4.10
[ T021: val( a [ i % 16 + 1 ] ) ]...............................5.58
[ T022: dtos( d - i % 10000 ) ].................................5.45
[ T023: eval( { || i % 16 } ) ].................................3.32
[ T024: eval( bc := { || i % 16 } ) ]...........................1.97
[ T025: eval( { |x| x % 16 }, i ) ].............................2.03
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................1.61
[ T027: eval( { |x| f1( x ) }, i ) ]............................2.42
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................2.71
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................1.74
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................5.06
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................0.03
[ T032: x := valtype( x ) + valtype( i ) ].....................4.39
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........2.45
[ T034: x := a[ i % 16 + 1 ] == s ].............................4.45
[ T035: x := a[ i % 16 + 1 ] = s ]..............................4.90
[ T036: x := a[ i % 16 + 1 ] >= s ].............................5.52
[ T037: x := a[ i % 16 + 1 ] <= s ].............................5.13
[ T038: x := a[ i % 16 + 1 ] < s ]..............................4.03
[ T039: x := a[ i % 16 + 1 ] > s ]..............................4.23
[ T040: ascan( a, i % 16 ) ]....................................0.68
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................1.55
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....2.52
[ T043: x := a ]................................................0.00
[ T044: x := {} ]...............................................0.97
[ T045: f0() ]..................................................0.32
[ T046: f1( i ) ]...............................................0.71
[ T047: f2( c[1...8] ) ]........................................0.77
[ T048: f2( c[1...40000] ) ]....................................0.29
[ T049: f2( @c[1...40000] ) ]...................................0.90
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.55
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.35
[ T052: f2( a ) ]...............................................0.87
[ T053: x := f4() ].............................................0.35
[ T054: x := f5() ].............................................0.74
[ T055: x := space(16) ]........................................0.81
[ T056: f_prv( c ) ]............................................1.03
====================================================================
[ total application time: ].....................................0.00
[ total real time: ]...........................................23.77
2009.11.25 00:32:10 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) (MT)+ EMX GNU C 3.3.5 (32-bit) x86
THREADS: 2
N_LOOPS: 1000000
1 th. 2 th. factor
============================================================================
[ T001: x := L_C ]____________________________________ 0.27 0.13 -> 2.03
[ T002: x := L_N ]____________________________________ 0.15 0.08 -> 1.96
[ T003: x := L_D ]____________________________________ 0.14 0.08 -> 1.88
[ T004: x := S_C ]____________________________________ 0.31 0.60 -> 0.53
[ T005: x := S_N ]____________________________________ 0.18 0.10 -> 1.89
[ T006: x := S_D ]____________________________________ 0.19 0.09 -> 2.00
[ T007: x := M->M_C ]_________________________________ 0.38 0.20 -> 1.96
[ T008: x := M->M_N ]_________________________________ 0.26 0.13 -> 1.93
[ T009: x := M->M_D ]_________________________________ 0.25 0.13 -> 1.94
[ T010: x := M->P_C ]_________________________________ 0.31 0.19 -> 1.63
[ T011: x := M->P_N ]_________________________________ 0.26 0.13 -> 2.02
[ T012: x := M->P_D ]_________________________________ 0.25 0.13 -> 1.97
[ T013: x := F_C ]____________________________________ 0.75 0.38 -> 1.96
[ T014: x := F_N ]____________________________________ 0.57 0.29 -> 1.96
[ T015: x := F_D ]____________________________________ 0.34 0.17 -> 1.95
[ T016: x := o:Args ]_________________________________ 0.66 0.34 -> 1.93
[ T017: x := o[2] ]___________________________________ 0.46 0.24 -> 1.91
[ T018: round( i / 1000, 2 ) ]________________________ 0.81 0.42 -> 1.94
[ T019: str( i / 1000 ) ]_____________________________ 2.66 1.35 -> 1.97
[ T020: val( s ) ]____________________________________ 0.78 0.40 -> 1.97
[ T021: val( a [ i % 16 + 1 ] ) ]_____________________ 1.41 0.71 -> 1.97
[ T022: dtos( d - i % 10000 ) ]_______________________ 1.39 0.71 -> 1.95
[ T023: eval( { || i % 16 } ) ]_______________________ 1.80 1.98 -> 0.91
[ T024: eval( bc := { || i % 16 } ) ]_________________ 0.88 0.45 -> 1.95
[ T025: eval( { |x| x % 16 }, i ) ]___________________ 1.18 1.67 -> 0.71
[ T026: eval( bc := { |x| x % 16 }, i ) ]_____________ 0.86 0.45 -> 1.93
[ T027: eval( { |x| f1( x ) }, i ) ]__________________ 1.31 1.59 -> 0.83
[ T028: eval( bc := { |x| f1( x ) }, i ) ]____________ 0.99 0.50 -> 1.96
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ]_______ 0.99 0.50 -> 1.96
[ T030: x := &( "f1(" + str(i) + ")" ) ]______________ 11.26 6.00 -> 1.88
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]______ 12.32 7.04 -> 1.75
[ T032: x := valtype( x ) + valtype( i ) ]___________ 1.46 0.74 -> 1.98
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ] 2.80 1.41 -> 1.98
[ T034: x := a[ i % 16 + 1 ] == s ]___________________ 1.14 0.57 -> 1.99
[ T035: x := a[ i % 16 + 1 ] = s ]____________________ 1.17 0.59 -> 1.98
[ T036: x := a[ i % 16 + 1 ] >= s ]___________________ 1.18 0.60 -> 1.98
[ T037: x := a[ i % 16 + 1 ] <= s ]___________________ 1.18 0.60 -> 1.97
[ T038: x := a[ i % 16 + 1 ] < s ]____________________ 1.18 0.60 -> 1.95
[ T039: x := a[ i % 16 + 1 ] > s ]____________________ 1.19 0.60 -> 1.99
[ T040: ascan( a, i % 16 ) ]__________________________ 1.13 0.58 -> 1.97
[ T041: ascan( a, { |x| x == i % 16 } ) ]_____________ 10.17 6.12 -> 1.66
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s ] 3.21 2.45 -> 1.31
[ T043: x := a ]______________________________________ 0.28 0.14 -> 2.03
[ T044: x := {} ]_____________________________________ 0.61 0.77 -> 0.79
[ T045: f0() ]________________________________________ 0.28 0.14 -> 1.92
[ T046: f1( i ) ]_____________________________________ 0.39 0.20 -> 1.95
[ T047: f2( c[1...8] ) ]______________________________ 0.48 0.24 -> 1.95
[ T048: f2( c[1...40000] ) ]__________________________ 0.48 0.24 -> 2.04
[ T049: f2( @c[1...40000] ) ]_________________________ 0.35 0.17 -> 2.02
[ T050: f2( @c[1...40000] ), c2 := c ]________________ 0.55 0.28 -> 1.99
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]__________ 1.43 0.72 -> 1.99
[ T052: f2( a ) ]_____________________________________ 0.50 0.26 -> 1.91
[ T053: x := f4() ]___________________________________ 2.26 1.15 -> 1.97
[ T054: x := f5() ]___________________________________ 0.91 0.45 -> 2.00
[ T055: x := space(16) ]______________________________ 0.73 0.37 -> 1.97
[ T056: f_prv( c ) ]__________________________________ 1.56 0.78 -> 1.99
============================================================================
[ TOTAL ]_________________________________________ 81.00 47.95 -> 1.69
============================================================================
[ total application time: ].....................................2.32
[ total real time: ]..........................................128.95
2009.11.25 00:55:14 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) EMX GNU C 3.3.5 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.00
====================================================================
[ T001: x := L_C ]..............................................0.00
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.03
[ T005: x := S_N ]..............................................0.00
[ T006: x := S_D ]..............................................0.00
[ 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.00
[ T013: x := F_C ]..............................................0.00
[ T014: x := F_N ]..............................................0.03
[ T015: x := F_D ]..............................................0.03
[ T016: x := o:Args ]...........................................0.03
[ T017: x := o[2] ].............................................0.00
[ T018: round( i / 1000, 2 ) ]..................................0.00
[ T019: str( i / 1000 ) ].......................................0.10
[ T020: val( s ) ]..............................................0.10
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.06
[ T022: dtos( d - i % 10000 ) ].................................0.10
[ T023: eval( { || i % 16 } ) ].................................0.06
[ T024: eval( bc := { || i % 16 } ) ]...........................0.03
[ T025: eval( { |x| x % 16 }, i ) ].............................0.10
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.00
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.32
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.06
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.06
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.16
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................0.81
[ T032: x := valtype( x ) + valtype( i ) ].....................0.10
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.13
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.03
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.03
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.03
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.00
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.03
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.13
[ T040: ascan( a, i % 16 ) ]....................................0.00
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................0.71
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.23
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.06
[ T045: f0() ]..................................................0.00
[ T046: f1( i ) ]...............................................0.03
[ T047: f2( c[1...8] ) ]........................................0.00
[ T048: f2( c[1...40000] ) ]....................................0.00
[ T049: f2( @c[1...40000] ) ]...................................0.00
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.00
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.00
[ T052: f2( a ) ]...............................................0.00
[ T053: x := f4() ].............................................0.06
[ T054: x := f5() ].............................................0.03
[ T055: x := space(16) ]........................................0.10
[ T056: f_prv( c ) ]............................................0.26
====================================================================
[ total application time: ].....................................5.19
[ total real time: ]...........................................40.59
2009.11.25 00:56:10 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) (MT) EMX GNU C 3.3.5 (32-bit) x86
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.00
====================================================================
[ T001: x := L_C ]..............................................0.00
[ T002: x := L_N ]..............................................0.00
[ T003: x := L_D ]..............................................0.00
[ T004: x := S_C ]..............................................0.00
[ 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.00
[ T009: x := M->M_D ]...........................................0.06
[ T010: x := M->P_C ]...........................................0.00
[ T011: x := M->P_N ]...........................................0.00
[ T012: x := M->P_D ]...........................................0.00
[ T013: x := F_C ]..............................................0.06
[ T014: x := F_N ]..............................................0.00
[ T015: x := F_D ]..............................................0.00
[ T016: x := o:Args ]...........................................0.00
[ T017: x := o[2] ].............................................0.10
[ T018: round( i / 1000, 2 ) ]..................................0.03
[ T019: str( i / 1000 ) ].......................................0.13
[ T020: val( s ) ]..............................................0.10
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.00
[ T022: dtos( d - i % 10000 ) ].................................0.23
[ T023: eval( { || i % 16 } ) ].................................0.26
[ T024: eval( bc := { || i % 16 } ) ]...........................0.00
[ T025: eval( { |x| x % 16 }, i ) ].............................0.10
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.03
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.06
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.13
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.03
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................1.00
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................1.39
[ T032: x := valtype( x ) + valtype( i ) ].....................0.10
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........0.35
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.10
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.00
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.32
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.03
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.06
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.00
[ T040: ascan( a, i % 16 ) ]....................................0.16
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................0.68
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....0.39
[ T043: x := a ]................................................0.03
[ T044: x := {} ]...............................................0.03
[ T045: f0() ]..................................................0.00
[ T046: f1( i ) ]...............................................0.00
[ T047: f2( c[1...8] ) ]........................................0.06
[ T048: f2( c[1...40000] ) ]....................................0.00
[ T049: f2( @c[1...40000] ) ]...................................0.00
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.06
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.10
[ T052: f2( a ) ]...............................................0.03
[ T053: x := f4() ].............................................0.19
[ T054: x := f5() ].............................................0.23
[ T055: x := space(16) ]........................................0.06
[ T056: f_prv( c ) ]............................................0.16
====================================================================
[ total application time: ].....................................6.94
[ total real time: ]...........................................47.72
2009.11.25 00:57:05 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) (MT)+ EMX GNU C 3.3.5 (32-bit) x86
THREADS: all->56
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.00
====================================================================
[ T001: x := L_C ]..............................................1.45
[ T002: x := L_N ]..............................................1.42
[ T003: x := L_D ]..............................................0.06
[ T004: x := S_C ]..............................................0.19
[ T005: x := S_N ]..............................................0.74
[ T006: x := S_D ]..............................................1.26
[ T007: x := M->M_C ]...........................................1.03
[ T008: x := M->M_N ]...........................................1.13
[ T009: x := M->M_D ]...........................................1.19
[ T010: x := M->P_C ]...........................................1.48
[ T011: x := M->P_N ]...........................................0.13
[ T012: x := M->P_D ]...........................................1.16
[ T013: x := F_C ].............................................15.61
[ T014: x := F_N ]..............................................1.03
[ T015: x := F_D ]..............................................1.10
[ T016: x := o:Args ]...........................................1.19
[ T017: x := o[2] ].............................................0.84
[ T018: round( i / 1000, 2 ) ]..................................1.48
[ T019: str( i / 1000 ) ]......................................12.97
[ T020: val( s ) ]..............................................1.52
[ T021: val( a [ i % 16 + 1 ] ) ]...............................1.00
[ T022: dtos( d - i % 10000 ) ]................................14.00
[ T023: eval( { || i % 16 } ) ].................................7.97
[ T024: eval( bc := { || i % 16 } ) ]...........................1.68
[ T025: eval( { |x| x % 16 }, i ) ]............................14.19
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................2.13
[ T027: eval( { |x| f1( x ) }, i ) ]...........................11.94
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................1.35
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................1.39
[ T030: x := &( "f1(" + str(i) + ")" ) ].......................13.19
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]...............25.19
[ T032: x := valtype( x ) + valtype( i ) ].....................9.58
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ].........14.48
[ T034: x := a[ i % 16 + 1 ] == s ].............................1.94
[ T035: x := a[ i % 16 + 1 ] = s ]..............................1.65
[ T036: x := a[ i % 16 + 1 ] >= s ].............................2.03
[ T037: x := a[ i % 16 + 1 ] <= s ].............................1.65
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.90
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.00
[ T040: ascan( a, i % 16 ) ]....................................2.06
[ T041: ascan( a, { |x| x == i % 16 } ) ]......................10.77
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....7.81
[ T043: x := a ]................................................0.13
[ T044: x := {} ]..............................................11.19
[ T045: f0() ]..................................................0.10
[ T046: f1( i ) ]...............................................0.00
[ T047: f2( c[1...8] ) ]........................................0.19
[ T048: f2( c[1...40000] ) ]....................................0.00
[ T049: f2( @c[1...40000] ) ]...................................0.00
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.26
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.13
[ T052: f2( a ) ]...............................................0.16
[ T053: x := f4() ]............................................11.97
[ T054: x := f5() ].............................................8.19
[ T055: x := space(16) ].......................................11.45
[ T056: f_prv( c ) ]............................................6.39
====================================================================
[ total application time: ].....................................0.00
[ total real time: ]...........................................56.66
2009.11.25 00:58:21 OS/2 4.50
Harbour 2.0.0beta3 (Rev. 13011) (MT)+ EMX GNU C 3.3.5 (32-bit) x86
THREADS: 2
N_LOOPS: 1000000
1 th. 2 th. factor
============================================================================
[ T001: x := L_C ]____________________________________ 0.25 0.32 -> 0.78
[ T002: x := L_N ]____________________________________ 0.14 0.07 -> 2.01
[ T003: x := L_D ]____________________________________ 0.15 0.07 -> 2.07
[ T004: x := S_C ]____________________________________ 0.32 0.60 -> 0.53
[ T005: x := S_N ]____________________________________ 0.19 0.09 -> 1.99
[ T006: x := S_D ]____________________________________ 0.18 0.09 -> 1.94
[ T007: x := M->M_C ]_________________________________ 0.38 0.19 -> 1.97
[ T008: x := M->M_N ]_________________________________ 0.24 0.12 -> 1.98
[ T009: x := M->M_D ]_________________________________ 0.25 0.13 -> 1.98
[ T010: x := M->P_C ]_________________________________ 0.31 0.19 -> 1.58
[ T011: x := M->P_N ]_________________________________ 0.24 0.13 -> 1.92
[ T012: x := M->P_D ]_________________________________ 0.25 0.12 -> 2.00
[ T013: x := F_C ]____________________________________ 1.16 4.23 -> 0.27
[ T014: x := F_N ]____________________________________ 0.58 0.30 -> 1.95
[ T015: x := F_D ]____________________________________ 0.35 0.18 -> 1.98
[ T016: x := o:Args ]_________________________________ 0.64 0.32 -> 1.98
[ T017: x := o[2] ]___________________________________ 0.50 0.25 -> 1.97
[ T018: round( i / 1000, 2 ) ]________________________ 0.83 0.43 -> 1.93
[ T019: str( i / 1000 ) ]_____________________________ 2.98 3.74 -> 0.80
[ T020: val( s ) ]____________________________________ 0.77 0.39 -> 1.98
[ T021: val( a [ i % 16 + 1 ] ) ]_____________________ 1.36 0.70 -> 1.96
[ T022: dtos( d - i % 10000 ) ]_______________________ 1.89 2.43 -> 0.78
[ T023: eval( { || i % 16 } ) ]_______________________ 2.80 5.68 -> 0.49
[ T024: eval( bc := { || i % 16 } ) ]_________________ 0.91 0.47 -> 1.92
[ T025: eval( { |x| x % 16 }, i ) ]___________________ 1.80 2.66 -> 0.67
[ T026: eval( bc := { |x| x % 16 }, i ) ]_____________ 0.89 0.46 -> 1.94
[ T027: eval( { |x| f1( x ) }, i ) ]__________________ 1.86 2.28 -> 0.81
[ T028: eval( bc := { |x| f1( x ) }, i ) ]____________ 0.95 0.48 -> 1.99
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ]_______ 0.94 0.47 -> 1.99
[ T030: x := &( "f1(" + str(i) + ")" ) ]______________ 14.23 26.22 -> 0.54
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]______ 16.22 34.17 -> 0.47
[ T032: x := valtype( x ) + valtype( i ) ]___________ 1.84 2.50 -> 0.74
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ] 3.30 3.51 -> 0.94
[ T034: x := a[ i % 16 + 1 ] == s ]___________________ 1.21 0.72 -> 1.67
[ T035: x := a[ i % 16 + 1 ] = s ]____________________ 1.25 0.74 -> 1.70
[ T036: x := a[ i % 16 + 1 ] >= s ]___________________ 1.26 0.74 -> 1.70
[ T037: x := a[ i % 16 + 1 ] <= s ]___________________ 1.26 0.77 -> 1.63
[ T038: x := a[ i % 16 + 1 ] < s ]____________________ 1.26 0.76 -> 1.66
[ T039: x := a[ i % 16 + 1 ] > s ]____________________ 1.27 0.75 -> 1.68
[ T040: ascan( a, i % 16 ) ]__________________________ 1.14 0.58 -> 1.97
[ T041: ascan( a, { |x| x == i % 16 } ) ]_____________ 11.12 8.84 -> 1.26
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s ] 4.38 6.39 -> 0.69
[ T043: x := a ]______________________________________ 0.28 0.14 -> 1.99
[ T044: x := {} ]_____________________________________ 1.08 2.85 -> 0.38
[ T045: f0() ]________________________________________ 0.28 0.14 -> 1.94
[ T046: f1( i ) ]_____________________________________ 0.00 0.73 -> 0.00
[ T047: f2( c[1...8] ) ]______________________________ 0.48 0.00 -> 0.00
[ T048: f2( c[1...40000] ) ]__________________________ 0.45 0.24 -> 1.89
[ T049: f2( @c[1...40000] ) ]_________________________ 0.34 0.17 -> 1.99
[ T050: f2( @c[1...40000] ), c2 := c ]________________ 0.57 0.40 -> 1.43
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]__________ 1.44 0.83 -> 1.73
[ T052: f2( a ) ]_____________________________________ 0.49 0.25 -> 1.94
[ T053: x := f4() ]___________________________________ 2.69 3.23 -> 0.83
[ T054: x := f5() ]___________________________________ 1.34 3.45 -> 0.39
[ T055: x := space(16) ]______________________________ 1.20 3.53 -> 0.34
[ T056: f_prv( c ) ]__________________________________ 2.18 3.54 -> 0.62
============================================================================
[ TOTAL ]_________________________________________ 96.65 133.79 -> 0.72
============================================================================
[ total application time: ].....................................2.13
[ total real time: ]..........................................230.45
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour