On Sun, 29 Mar 2009, Angel Pais wrote: Hi,
> Here new set of results with download link included... > Please other windows users download and post results here Thank you very much. > Computer PIV Dual COre 3.0 win 2003 server, used tru VNC > 03/29/2009 14:04:15 Windows XP 05.02 Build 03790 > Xbase++ (R) Version 1.90 (MT)+ > THREADS: 2 > N_LOOPS: 1000000 > ============================================================================ > [ T001: x := L_C ]____________________________________ 0.13 0.12 -> 1.08 > [ T002: x := L_N ]____________________________________ 0.11 0.09 -> 1.22 > [ T003: x := L_D ]____________________________________ 0.08 0.08 -> 1.00 > [ T004: x := S_C ]____________________________________ 0.22 0.20 -> 1.10 > [ T005: x := S_N ]____________________________________ 0.17 0.16 -> 1.06 > [ T006: x := S_D ]____________________________________ 0.18 0.28 -> 0.64 > [ T007: x := M->M_C ]_________________________________ 0.47 0.49 -> 0.96 > [ T008: x := M->M_N ]_________________________________ 0.34 0.36 -> 0.94 > [ T009: x := M->M_D ]_________________________________ 0.34 0.36 -> 0.94 > [ T010: x := M->P_C ]_________________________________ 0.47 0.53 -> 0.89 > [ T011: x := M->P_N ]_________________________________ 0.58 0.40 -> 1.45 > [ T012: x := M->P_D ]_________________________________ 0.77 0.81 -> 0.95 > [ T013: x := F_C ]____________________________________ 0.74 0.70 -> 1.06 > [ T014: x := F_N ]____________________________________ 0.64 0.58 -> 1.10 > [ T015: x := F_D ]____________________________________ 0.59 0.64 -> 0.92 > [ T016: x := o:Args ]_________________________________ 0.42 0.47 -> 0.89 > [ T017: x := o[2] ]___________________________________ 0.19 0.16 -> 1.19 > [ T018: round( i / 1000, 2 ) ]________________________ 3.43 3.33 -> 1.03 > [ T019: str( i / 1000 ) ]_____________________________ 21.55 21.41 -> 1.01 > [ T020: val( s ) ]____________________________________ 0.96 1.00 -> 0.96 [...] > ============================================================================ > [ TOTAL ]_________________________________________252.12 253.42 -> 0.99 > ============================================================================ > [ total application time: ]...................................505.66 > [ total real time: ]..........................................505.66 > It went ok, however only processor 1 was at 100% So they assigned the process to single CPU. > set HB_USER_CFLAGS=-DHB_FM_STATISTICS_OFF > 03/29/09 14:12:42 Windows Server 2003 / XP x64 5.2.3790 > Harbour 1.1.0dev (Rev. 10718) (MT)+ Microsoft Visual C++ 14.0.24999 (32-bit) > THREADS: 2 > N_LOOPS: 1000000 > 1 th. 2 th. factor > ============================================================================ > [ T001: x := L_C ]____________________________________ 0.28 0.25 -> 1.13 > [ T002: x := L_N ]____________________________________ 0.19 0.16 -> 1.20 > [ T003: x := L_D ]____________________________________ 0.16 0.19 -> 0.84 > [ T004: x := S_C ]____________________________________ 0.30 0.27 -> 1.12 > [ T005: x := S_N ]____________________________________ 0.19 0.19 -> 0.99 > [ T006: x := S_D ]____________________________________ 0.22 0.19 -> 1.16 > [ T007: x := M->M_C ]_________________________________ 0.33 0.31 -> 1.05 > [ T008: x := M->M_N ]_________________________________ 0.25 0.23 -> 1.07 > [ T009: x := M->M_D ]_________________________________ 0.22 0.22 -> 1.00 > [ T010: x := M->P_C ]_________________________________ 0.27 0.27 -> 1.00 > [ T011: x := M->P_N ]_________________________________ 0.22 0.25 -> 0.88 > [ T012: x := M->P_D ]_________________________________ 0.23 0.24 -> 1.00 > [ T013: x := F_C ]____________________________________ 0.88 0.83 -> 1.06 > [ T014: x := F_N ]____________________________________ 0.72 0.66 -> 1.09 > [ T015: x := F_D ]____________________________________ 0.41 0.38 -> 1.08 > [ T016: x := o:Args ]_________________________________ 0.64 0.69 -> 0.93 > [ T017: x := o[2] ]___________________________________ 0.44 0.47 -> 0.93 > [ T018: round( i / 1000, 2 ) ]________________________ 0.72 0.64 -> 1.12 > [ T019: str( i / 1000 ) ]_____________________________ 1.80 1.59 -> 1.13 > [ T020: val( s ) ]____________________________________ 0.94 0.89 -> 1.05 [...] > ============================================================================ > [ TOTAL ]_________________________________________228.59 294.75 -> 0.78 > ============================================================================ > [ total application time: ]...................................689.98 > [ total real time: ]..........................................523.52 > Both processors at 100%, occasionally 1st. proc was at 60% And here we have _FATAL_ scalability results. It's very strange for me. In most of above tests non memory allocation or even internal locks are used. It should be perfectly well scaled to number of CPU but it isn't. So the memory allocator is not a problem in Windows builds. It's rather look like some type of hardware performance reduction. Don't you have enabled some automatic CPU clock reduction for idle state? In some cases it may cause such results. > set HB_USER_CFLAGS=-DHB_FM_STATISTICS_OFF -DHB_FM_WIN_ALLOC > 03/29/09 14:21:25 Windows Server 2003 / XP x64 5.2.3790 > Harbour 1.1.0dev (Rev. 10718) (MT)+ Microsoft Visual C++ 14.0.24999 (32-bit) > THREADS: 2 > N_LOOPS: 1000000 > 1 th. 2 th. factor > ============================================================================ > [ T001: x := L_C ]____________________________________ 0.31 0.30 -> 1.05 > [ T002: x := L_N ]____________________________________ 0.20 0.19 -> 1.09 > [ T003: x := L_D ]____________________________________ 0.20 0.19 -> 1.08 > [ T004: x := S_C ]____________________________________ 0.34 0.34 -> 1.00 > [ T005: x := S_N ]____________________________________ 0.23 0.24 -> 1.00 > [ T006: x := S_D ]____________________________________ 0.25 0.23 -> 1.07 > [ T007: x := M->M_C ]_________________________________ 0.38 0.41 -> 0.92 > [ T008: x := M->M_N ]_________________________________ 0.28 0.30 -> 0.95 > [ T009: x := M->M_D ]_________________________________ 0.28 0.28 -> 1.00 > [ T010: x := M->P_C ]_________________________________ 0.36 0.33 -> 1.09 > [ T011: x := M->P_N ]_________________________________ 0.28 0.28 -> 1.00 > [ T012: x := M->P_D ]_________________________________ 0.28 0.28 -> 1.00 > [ T013: x := F_C ]____________________________________ 1.03 1.03 -> 1.00 > [ T014: x := F_N ]____________________________________ 0.91 0.80 -> 1.14 > [ T015: x := F_D ]____________________________________ 0.49 0.48 -> 1.00 > [ T016: x := o:Args ]_________________________________ 0.73 0.83 -> 0.89 > [ T017: x := o[2] ]___________________________________ 0.55 0.58 -> 0.94 > [ T018: round( i / 1000, 2 ) ]________________________ 0.91 0.84 -> 1.07 > [ T019: str( i / 1000 ) ]_____________________________ 2.13 2.03 -> 1.05 > [ T020: val( s ) ]____________________________________ 1.13 1.05 -> 1.07 [...] > ============================================================================ > [ TOTAL ]_________________________________________436.06 344.65 -> 1.27 > ============================================================================ > [ total application time: ]..................................1025.06 > [ total real time: ]..........................................780.83 > Both processors at 100% most of the time, slighttly more used second than > first As above. Interesting that tests which does not make any memory allocations gave different results. > http://rapidshare.com/files/215014183/speedhb.zip.html > MD5: BE33161B84F0C8815AAB628C1341CC55 > Download and test yourself on true multiprocessor windows pc. Thank you. I'll try tomorrow in my office. I do not have such MS-Windows machine here. Here my results from Linux builds on Suse11.0 and default memory allocator. It's AMD Phenom(tm) 8450 Triple-Core Processor. With dynamic CPU clock 2100/1050 Mhz: 03/29/09 20:02:59 Linux 2.6.25.20-0.1-pae i686 Harbour 1.1.0dev (Rev. 10724) (MT)+ GNU C 4.3.1 (32-bit) THREADS: 2 N_LOOPS: 1000000 1 th. 2 th. factor ============================================================================ [ T001: x := L_C ]____________________________________ 0.23 0.11 -> 2.09 [ T002: x := L_N ]____________________________________ 0.15 0.15 -> 0.97 [ T003: x := L_D ]____________________________________ 0.14 0.10 -> 1.41 [ T004: x := S_C ]____________________________________ 0.22 0.23 -> 0.94 [ T005: x := S_N ]____________________________________ 0.19 0.15 -> 1.24 [ T006: x := S_D ]____________________________________ 0.19 0.14 -> 1.34 [ T007: x := M->M_C ]_________________________________ 0.24 0.18 -> 1.37 [ T008: x := M->M_N ]_________________________________ 0.22 0.17 -> 1.32 [ T009: x := M->M_D ]_________________________________ 0.22 0.13 -> 1.64 [ T010: x := M->P_C ]_________________________________ 0.25 0.14 -> 1.77 [ T011: x := M->P_N ]_________________________________ 0.21 0.16 -> 1.33 [ T012: x := M->P_D ]_________________________________ 0.22 0.13 -> 1.61 [ T013: x := F_C ]____________________________________ 0.50 0.27 -> 1.83 [ T014: x := F_N ]____________________________________ 0.61 0.33 -> 1.85 [ T015: x := F_D ]____________________________________ 0.32 0.25 -> 1.28 [ T016: x := o:Args ]_________________________________ 0.52 0.29 -> 1.79 [ T017: x := o[2] ]___________________________________ 0.34 0.21 -> 1.62 [ T018: round( i / 1000, 2 ) ]________________________ 0.66 0.38 -> 1.75 [ T019: str( i / 1000 ) ]_____________________________ 1.38 0.74 -> 1.87 [ T020: val( s ) ]____________________________________ 0.72 0.41 -> 1.75 [ T021: val( a [ i % 16 + 1 ] ) ]_____________________ 1.11 0.59 -> 1.87 [ T022: dtos( d - i % 10000 ) ]_______________________ 1.03 0.52 -> 1.96 [ T023: eval( { || i % 16 } ) ]_______________________ 1.28 1.32 -> 0.97 [ T024: eval( bc := { || i % 16 } ) ]_________________ 0.76 0.42 -> 1.80 [ T025: eval( { |x| x % 16 }, i ) ]___________________ 1.03 1.09 -> 0.94 [ T026: eval( bc := { |x| x % 16 }, i ) ]_____________ 0.78 0.47 -> 1.66 [ T027: eval( { |x| f1( x ) }, i ) ]__________________ 1.18 1.17 -> 1.01 [ T028: eval( bc := { |x| f1( x ) }, i ) ]____________ 0.93 0.49 -> 1.88 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ]_______ 0.96 0.53 -> 1.80 [ T030: x := &( "f1(" + str(i) + ")" ) ]______________ 7.93 4.34 -> 1.83 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]______ 9.07 6.12 -> 1.48 [ T032: x := valtype( x ) + valtype( i ) ]___________ 1.10 0.56 -> 1.97 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ] 1.85 0.96 -> 1.93 [ T034: x := a[ i % 16 + 1 ] == s ]___________________ 0.79 0.43 -> 1.85 [ T035: x := a[ i % 16 + 1 ] = s ]____________________ 0.86 0.46 -> 1.87 [ T036: x := a[ i % 16 + 1 ] >= s ]___________________ 0.87 0.47 -> 1.84 [ T037: x := a[ i % 16 + 1 ] <= s ]___________________ 0.85 0.47 -> 1.82 [ T038: x := a[ i % 16 + 1 ] < s ]____________________ 0.86 0.48 -> 1.81 [ T039: x := a[ i % 16 + 1 ] > s ]____________________ 0.86 0.48 -> 1.81 [ T040: ascan( a, i % 16 ) ]__________________________ 0.95 0.56 -> 1.70 [ T041: ascan( a, { |x| x == i % 16 } ) ]_____________ 8.03 4.56 -> 1.76 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s ] 2.23 1.50 -> 1.49 [ T043: x := a ]______________________________________ 0.19 0.14 -> 1.38 [ T044: x := {} ]_____________________________________ 0.44 0.98 -> 0.45 [ T045: f0() ]________________________________________ 0.30 0.18 -> 1.62 [ T046: f1( i ) ]_____________________________________ 0.40 0.22 -> 1.79 [ T047: f2( c[1...8] ) ]______________________________ 0.41 0.24 -> 1.70 [ T048: f2( c[1...40000] ) ]__________________________ 0.41 0.24 -> 1.73 [ T049: f2( @c[1...40000] ) ]_________________________ 0.38 0.23 -> 1.68 [ T050: f2( @c[1...40000] ), c2 := c ]________________ 0.49 0.28 -> 1.74 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]__________ 1.02 0.54 -> 1.90 [ T052: f2( a ) ]_____________________________________ 0.42 0.25 -> 1.68 [ T053: x := f4() ]___________________________________ 1.25 0.66 -> 1.88 [ T054: x := f5() ]___________________________________ 0.77 0.43 -> 1.81 [ T055: x := space(16) ]______________________________ 0.61 0.35 -> 1.75 [ T056: f_prv( c ) ]__________________________________ 1.20 0.81 -> 1.48 ============================================================================ [ TOTAL ]_________________________________________ 61.13 38.23 -> 1.60 ============================================================================ [ total application time: ]...................................134.56 [ total real time: ]...........................................99.36 When I disable dynamic CPU clock updating and set it to fixed 2100 Mhz: 03/29/09 20:08:40 Linux 2.6.25.20-0.1-pae i686 Harbour 1.1.0dev (Rev. 10724) (MT)+ GNU C 4.3.1 (32-bit) THREADS: 2 N_LOOPS: 1000000 1 th. 2 th. factor ============================================================================ [ T001: x := L_C ]____________________________________ 0.18 0.09 -> 1.95 [ T002: x := L_N ]____________________________________ 0.14 0.07 -> 1.99 [ T003: x := L_D ]____________________________________ 0.15 0.07 -> 1.99 [ T004: x := S_C ]____________________________________ 0.22 0.20 -> 1.11 [ T005: x := S_N ]____________________________________ 0.19 0.10 -> 1.99 [ T006: x := S_D ]____________________________________ 0.19 0.10 -> 1.99 [ T007: x := M->M_C ]_________________________________ 0.24 0.12 -> 2.00 [ T008: x := M->M_N ]_________________________________ 0.22 0.11 -> 2.00 [ T009: x := M->M_D ]_________________________________ 0.22 0.11 -> 2.00 [ T010: x := M->P_C ]_________________________________ 0.23 0.12 -> 1.89 [ T011: x := M->P_N ]_________________________________ 0.22 0.11 -> 1.99 [ T012: x := M->P_D ]_________________________________ 0.22 0.11 -> 2.00 [ T013: x := F_C ]____________________________________ 0.49 0.24 -> 2.01 [ T014: x := F_N ]____________________________________ 0.59 0.29 -> 2.01 [ T015: x := F_D ]____________________________________ 0.31 0.16 -> 1.95 [ T016: x := o:Args ]_________________________________ 0.51 0.25 -> 2.01 [ T017: x := o[2] ]___________________________________ 0.34 0.17 -> 1.98 [ T018: round( i / 1000, 2 ) ]________________________ 0.68 0.35 -> 1.97 [ T019: str( i / 1000 ) ]_____________________________ 1.37 0.69 -> 1.97 [ T020: val( s ) ]____________________________________ 0.74 0.37 -> 2.01 [ T021: val( a [ i % 16 + 1 ] ) ]_____________________ 1.12 0.56 -> 2.02 [ T022: dtos( d - i % 10000 ) ]_______________________ 1.01 0.51 -> 1.97 [ T023: eval( { || i % 16 } ) ]_______________________ 1.27 1.40 -> 0.91 [ T024: eval( bc := { || i % 16 } ) ]_________________ 0.76 0.38 -> 2.00 [ T025: eval( { |x| x % 16 }, i ) ]___________________ 1.02 1.07 -> 0.95 [ T026: eval( bc := { |x| x % 16 }, i ) ]_____________ 0.77 0.39 -> 1.99 [ T027: eval( { |x| f1( x ) }, i ) ]__________________ 1.17 1.16 -> 1.01 [ T028: eval( bc := { |x| f1( x ) }, i ) ]____________ 0.92 0.47 -> 1.95 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ]_______ 0.95 0.48 -> 1.97 [ T030: x := &( "f1(" + str(i) + ")" ) ]______________ 8.13 4.29 -> 1.90 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]______ 8.89 5.37 -> 1.66 [ T032: x := valtype( x ) + valtype( i ) ]___________ 1.06 0.56 -> 1.88 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ] 1.81 0.92 -> 1.97 [ T034: x := a[ i % 16 + 1 ] == s ]___________________ 0.76 0.39 -> 1.95 [ T035: x := a[ i % 16 + 1 ] = s ]____________________ 0.83 0.42 -> 1.96 [ T036: x := a[ i % 16 + 1 ] >= s ]___________________ 0.89 0.44 -> 2.04 [ T037: x := a[ i % 16 + 1 ] <= s ]___________________ 0.86 0.44 -> 1.97 [ T038: x := a[ i % 16 + 1 ] < s ]____________________ 0.85 0.44 -> 1.96 [ T039: x := a[ i % 16 + 1 ] > s ]____________________ 0.85 0.44 -> 1.95 [ T040: ascan( a, i % 16 ) ]__________________________ 0.97 0.49 -> 1.98 [ T041: ascan( a, { |x| x == i % 16 } ) ]_____________ 7.99 4.51 -> 1.77 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s ] 2.23 1.55 -> 1.44 [ T043: x := a ]______________________________________ 0.19 0.10 -> 2.00 [ T044: x := {} ]_____________________________________ 0.44 0.87 -> 0.50 [ T045: f0() ]________________________________________ 0.29 0.15 -> 1.99 [ T046: f1( i ) ]_____________________________________ 0.40 0.20 -> 1.98 [ T047: f2( c[1...8] ) ]______________________________ 0.42 0.21 -> 1.98 [ T048: f2( c[1...40000] ) ]__________________________ 0.42 0.21 -> 1.95 [ T049: f2( @c[1...40000] ) ]_________________________ 0.38 0.19 -> 1.98 [ T050: f2( @c[1...40000] ), c2 := c ]________________ 0.47 0.24 -> 1.99 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]__________ 1.00 0.50 -> 1.99 [ T052: f2( a ) ]_____________________________________ 0.44 0.22 -> 2.01 [ T053: x := f4() ]___________________________________ 1.21 0.62 -> 1.94 [ T054: x := f5() ]___________________________________ 0.78 0.45 -> 1.71 [ T055: x := space(16) ]______________________________ 0.61 0.31 -> 1.99 [ T056: f_prv( c ) ]__________________________________ 1.18 0.65 -> 1.81 ============================================================================ [ TOTAL ]_________________________________________ 60.82 35.43 -> 1.72 ============================================================================ [ total application time: ]...................................131.06 [ total real time: ]...........................................96.26 as you can see in nearly all tests the scalability is very close to 2.0 what is optimal result. It's three CPU machine so I also made test for 6 threads: speedtst --thread=6 --scale 03/29/09 20:19:48 Linux 2.6.25.20-0.1-pae i686 Harbour 1.1.0dev (Rev. 10724) (MT)+ GNU C 4.3.1 (32-bit) THREADS: 6 N_LOOPS: 1000000 1 th. 6 th. factor ============================================================================ [ T001: x := L_C ]____________________________________ 0.54 0.21 -> 2.64 [ T002: x := L_N ]____________________________________ 0.44 0.15 -> 2.86 [ T003: x := L_D ]____________________________________ 0.44 0.15 -> 2.84 [ T004: x := S_C ]____________________________________ 0.67 0.74 -> 0.90 [ T005: x := S_N ]____________________________________ 0.57 0.20 -> 2.84 [ T006: x := S_D ]____________________________________ 0.57 0.24 -> 2.45 [ T007: x := M->M_C ]_________________________________ 0.75 0.40 -> 1.88 [ T008: x := M->M_N ]_________________________________ 0.66 0.25 -> 2.69 [ T009: x := M->M_D ]_________________________________ 0.65 0.23 -> 2.89 [ T010: x := M->P_C ]_________________________________ 0.67 0.25 -> 2.64 [ T011: x := M->P_N ]_________________________________ 0.65 0.23 -> 2.80 [ T012: x := M->P_D ]_________________________________ 0.65 0.22 -> 2.98 [ T013: x := F_C ]____________________________________ 1.48 0.55 -> 2.69 [ T014: x := F_N ]____________________________________ 1.80 0.64 -> 2.82 [ T015: x := F_D ]____________________________________ 0.96 0.34 -> 2.83 [ T016: x := o:Args ]_________________________________ 1.53 0.59 -> 2.58 [ T017: x := o[2] ]___________________________________ 1.03 0.34 -> 3.02 [ T018: round( i / 1000, 2 ) ]________________________ 2.05 0.74 -> 2.76 [ T019: str( i / 1000 ) ]_____________________________ 4.12 1.48 -> 2.78 [ T020: val( s ) ]____________________________________ 2.22 0.77 -> 2.87 [ T021: val( a [ i % 16 + 1 ] ) ]_____________________ 3.34 1.27 -> 2.63 [ T022: dtos( d - i % 10000 ) ]_______________________ 3.05 1.07 -> 2.85 [ T023: eval( { || i % 16 } ) ]_______________________ 3.84 3.78 -> 1.02 [ T024: eval( bc := { || i % 16 } ) ]_________________ 2.29 0.82 -> 2.79 [ T025: eval( { |x| x % 16 }, i ) ]___________________ 3.14 3.58 -> 0.88 [ T026: eval( bc := { |x| x % 16 }, i ) ]_____________ 2.38 0.87 -> 2.74 [ T027: eval( { |x| f1( x ) }, i ) ]__________________ 3.60 3.83 -> 0.94 [ T028: eval( bc := { |x| f1( x ) }, i ) ]____________ 2.80 0.95 -> 2.93 [ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ]_______ 2.90 1.05 -> 2.77 [ T030: x := &( "f1(" + str(i) + ")" ) ]______________ 23.68 8.54 -> 2.77 [ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]______ 26.58 11.01 -> 2.41 [ T032: x := valtype( x ) + valtype( i ) ]___________ 3.18 1.13 -> 2.80 [ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ] 5.49 1.90 -> 2.89 [ T034: x := a[ i % 16 + 1 ] == s ]___________________ 2.31 0.80 -> 2.88 [ T035: x := a[ i % 16 + 1 ] = s ]____________________ 2.51 0.98 -> 2.55 [ T036: x := a[ i % 16 + 1 ] >= s ]___________________ 2.65 0.95 -> 2.79 [ T037: x := a[ i % 16 + 1 ] <= s ]___________________ 2.64 0.92 -> 2.86 [ T038: x := a[ i % 16 + 1 ] < s ]____________________ 2.56 0.95 -> 2.71 [ T039: x := a[ i % 16 + 1 ] > s ]____________________ 2.60 0.97 -> 2.69 [ T040: ascan( a, i % 16 ) ]__________________________ 2.92 1.05 -> 2.78 [ T041: ascan( a, { |x| x == i % 16 } ) ]_____________ 24.03 9.89 -> 2.43 [ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s ] 6.62 4.12 -> 1.61 [ T043: x := a ]______________________________________ 0.59 0.20 -> 2.99 [ T044: x := {} ]_____________________________________ 1.33 2.58 -> 0.52 [ T045: f0() ]________________________________________ 0.89 0.32 -> 2.78 [ T046: f1( i ) ]_____________________________________ 1.24 0.43 -> 2.86 [ T047: f2( c[1...8] ) ]______________________________ 1.28 0.44 -> 2.89 [ T048: f2( c[1...40000] ) ]__________________________ 1.29 0.48 -> 2.67 [ T049: f2( @c[1...40000] ) ]_________________________ 1.15 0.41 -> 2.80 [ T050: f2( @c[1...40000] ), c2 := c ]________________ 1.42 0.47 -> 3.00 [ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]__________ 3.02 1.05 -> 2.89 [ T052: f2( a ) ]_____________________________________ 1.31 0.50 -> 2.62 [ T053: x := f4() ]___________________________________ 3.62 1.33 -> 2.72 [ T054: x := f5() ]___________________________________ 2.36 0.84 -> 2.82 [ T055: x := space(16) ]______________________________ 1.82 0.72 -> 2.53 [ T056: f_prv( c ) ]__________________________________ 3.67 1.28 -> 2.86 ============================================================================ [ TOTAL ]_________________________________________182.53 80.22 -> 2.28 ============================================================================ [ total application time: ]...................................413.31 [ total real time: ]..........................................262.76 I would like to see similar results in Windows too but it's possible that in this OS it will be very hard to reach them. BTW I forgot to ask. Did you used -gc3 parameter compiling speedtst by hbmk2? best regards, Przemek _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour