[Harbour] 2008-10-03 21:53 UTC+0200 Przemyslaw Czerpak
(druzus/at/priv.onet.pl)
Szakáts Viktor
harbour.01 at syenar.hu
Fri Oct 3 19:23:01 EDT 2008
>>
Hi Przemek,
>> P4 2.66/800 HT, XP, MSVS2008 -gc3:
>
> I guess that HT means Hyper Thread CPU with two cores.
> Am I right?
You're right. It's a Northwood HT, first generation HT AFAIR.
>> Startup loop to increase CPU clock...
>> 10/03/08 22:23:07 Windows XP 5.1.2600 Service Pack 3
>> Harbour 1.1.0dev (Rev. 9539) (MT) Microsoft Visual C 15.0.26569 (32
>> bit)
>> N_LOOPS = 1000000
>> speedtst
>> -gc0 -gc3 -gc0 -
>> gc3
>> MT
>> MT
>> -----------------------------------------------------------------------
>> [ empty loop overhead ]....................0.13 ...0.03 ...0.09 ...
>> 0.06
>> =============================================== ======= =======
>> =======
>> [ total application time: ]...............61.00 ..60.50 .154.64 .
>> 123.61
>> [ total real time: ]......................57.73 ..51.34 ..78.61 ..
>> 63.39
>
> Thank you for your tests. Just a small question.
> Is the 1-st and 2-nd column for ST HVM or is it also MT HVM and only
> speedtst was run without additional parameter so all tests were
> executed
> by single thread only?
All these were MT speedtsts (two executables, one for -gc0,
one for -gc3), and 3rd 4th were run with a parameter to
enable parallel execution.
Here are the ST results with new speedtst:
Startup loop to increase CPU clock...
10/04/08 01:00:59 Windows XP 5.1.2600 Service Pack 3
Harbour 1.1.0dev (Rev. 9539) Microsoft Visual C 15.0.26569 (32 bit)
N_LOOPS = 1000000
-gc0 -gc3
======================================================== =======
[ empty loop overhead ].............................0.14 ...0.03
======================================================== =======
[ x := L_C ]........................................0.03 ...0.11
[ x := L_N ]........................................0.00 ...0.09
[ x := L_D ]........................................0.03 ...0.06
[ x := S_C ]........................................0.05 ...0.13
[ x := S_N ]........................................0.03 ...0.13
[ x := S_D ]........................................0.05 ...0.11
[ x := M_C ]........................................0.06 ...0.14
[ x := M_N ]........................................0.05 ...0.13
[ x := M_D ]........................................0.00 ...0.13
[ x := P_C ]........................................0.00 ...0.14
[ x := P_N ]........................................0.00 ...0.14
[ x := P_D ]........................................0.00 ...0.11
[ x := F_C ]........................................0.17 ...0.38
[ x := F_N ]........................................0.31 ...0.59
[ x := F_D ]........................................0.11 ...0.31
[ x := o:GenCode ]..................................0.14 ...0.39
[ x := 0 ]..........................................0.00 ...0.06
[ round( i / 1000, 2 ) ]............................0.25 ...0.47
[ str( i / 1000 ) ].................................0.58 ...1.25
[ val( s ) ]........................................0.31 ...0.75
[ val( a [ i % 16 + 1 ] ) ].........................0.69 ...1.16
[ dtos( d - i % 10000 ) ]...........................0.52 ...0.92
[ eval( { || i % 16 } ) ]...........................0.48 ...1.06
[ eval( bc := { || i % 16 } ) ].....................0.25 ...0.66
[ eval( { |x| x % 16 }, i ) ].......................0.52 ...0.81
[ eval( bc := { |x| x % 16 }, i ) ].................0.25 ...0.39
[ eval( { |x| f1( x ) }, i ) ]......................0.63 ...0.50
[ eval( bc := { |x| f1( x ) }, i ) ]................0.45 ...0.41
[ x := &( "f1(" + str(i) + ")" ) ]..................3.88 ...3.72
[ bc := &( "{|x|f1(x)}" ); eval( bc, i ) ]..........5.33 ...5.78
[ x := valtype( x ) + valtype( i ) ]...............0.61 ...0.42
[ x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]....2.05 ...0.98
[ x := a[ i % 16 + 1 ] == s ].......................0.41 ...0.38
[ x := a[ i % 16 + 1 ] = s ]........................0.45 ...0.45
[ x := a[ i % 16 + 1 ] >= s ].......................0.44 ...0.34
[ x := a[ i % 16 + 1 ] <= s ].......................0.50 ...0.28
[ x := a[ i % 16 + 1 ] < s ]........................0.39 ...0.41
[ x := a[ i % 16 + 1 ] > s ]........................0.42 ...0.31
[ ascan( a, i % 16 ) ]..............................0.48 ...0.33
[ ascan( a, { |x| x == i % 16 } ) ].................5.78 ...3.44
[ if i%1000==0;a:={};end; aadd(a,{i,1,.T.,s,s2,a....2.86 ...2.30
[ x := a ]..........................................0.03 ...0.09
[ x := {} ].........................................0.31 ...0.28
[ f0() ]............................................0.19 ...0.13
[ f1( i ) ].........................................0.27 ...0.27
[ f2( c[1...8] ) ]..................................0.38 ...0.30
[ f2( c[1...40000] ) ]..............................0.22 ...0.31
[ f2( @c[1...40000] ) ].............................0.23 ...0.20
[ f2( @c[1...40000] ), c2 := c ]....................0.30 ...0.19
[ f3( a, a2, s, i, s2, bc, i, n, x ) ]..............0.88 ...0.58
[ f2( a ) ].........................................0.34 ...0.25
[ x := f4() ].......................................2.22 ...2.19
[ x := f5() ].......................................0.73 ...0.58
======================================================== =======
[ total application time: ]........................43.00 ..37.75
[ total real time: ]...............................37.47 ..31.09
And here are the results with "OS/2" spinlocks enabled:
Startup loop to increase CPU clock...
10/04/08 01:15:03 Windows XP 5.1.2600 Service Pack 3
Harbour 1.1.0dev (Rev. 9542) (MT) Microsoft Visual C 15.0.26569 (32 bit)
N_LOOPS = 1000000
-gc0 -gc3 -gc0 -gc3
MT MT
[ empty loop overhead ]..................0.11 ...0.08 ...0.08 ...0.05
============================================= ======= ======= =======
[ x := L_C ].............................0.19 ...0.02 ..16.22 ...3.47
[ x := L_N ].............................0.02 ...0.00 ..13.45 ...1.77
[ x := L_D ].............................0.08 ...0.00 ..19.59 ...4.75
[ x := S_C ].............................0.28 ...0.08 ..22.72 ...6.75
[ x := S_N ].............................0.05 ...0.00 ..14.47 ...4.47
[ x := S_D ].............................0.06 ...0.00 ..12.97 ...2.88
[ x := M_C ].............................0.31 ...0.06 ..29.53 ...8.92
[ x := M_N ].............................0.05 ...0.09 ..15.89 ...4.92
[ x := M_D ].............................0.02 ...0.00 ..22.83 ...4.75
[ x := P_C ].............................0.14 ...0.17 ..12.27 ...9.52
[ x := P_N ].............................0.02 ...0.00 ..21.00 ...3.02
[ x := P_D ].............................0.02 ...0.02 ..16.23 ...4.45
[ x := F_C ].............................0.45 ...0.30 ..34.64 ..50.55
[ x := F_N ].............................0.33 ...0.25 ..25.94 ..10.89
[ x := F_D ].............................0.13 ...0.11 ..20.88 ...7.75
[ x := o:GenCode ].......................0.27 ...0.25 ..38.98 ..12.25
[ x := 0 ]...............................0.00 ...0.00 ..28.31 ...2.05
[ round( i / 1000, 2 ) ].................0.38 ...0.20 ..37.92 ..10.50
[ str( i / 1000 ) ]......................1.03 ...0.75 ..86.41 ..59.75
[ val( s ) ].............................0.44 ...0.25 ..41.80 ..19.63
[ val( a [ i % 16 + 1 ] ) ]..............1.00 ...0.84 ..56.27 ..25.09
[ dtos( d - i % 10000 ) ]................0.91 ...1.03 ..95.20 ..58.25
[ eval( { || i % 16 } ) ]................1.28 ...1.88 .100.30 ..79.53
[ eval( bc := { || i % 16 } ) ]..........0.52 ...0.72 ..38.41 ...4.25
[ eval( { |x| x % 16 }, i ) ]............1.61 ...1.27 ..86.22 ..68.63
[ eval( bc := { |x| x % 16 }, i ) ]......0.80 ...0.39 ..39.86 ...5.95
[ eval( { |x| f1( x ) }, i ) ]...........2.03 ...1.00 ..93.73 ..63.55
[ eval( bc := { |x| f1( x ) }, i ) ].....0.80 ...0.64 ..39.27 ...2.63
[ x := &( "f1(" + str(i) + ")" ) ].......7.08 ...6.39 .139.73 .109.97
[ bc := &( "{|x|f1(x)}" ); eval( bc, i..10.02 ...9.08 .139.45 .119.17
[ x := valtype( x ) + valtype( i ) ]....1.39 ...0.97 ..84.63 ..58.95
[ x := strzero( i % 100, 2 ) $ a[ i % ...2.66 ...1.27 ..93.80 ..65.20
[ x := a[ i % 16 + 1 ] == s ]............0.75 ...0.56 ..44.38 ..19.75
[ x := a[ i % 16 + 1 ] = s ].............0.88 ...0.53 ..32.34 ..21.11
[ x := a[ i % 16 + 1 ] >= s ]............1.25 ...0.52 ..55.80 ..22.38
[ x := a[ i % 16 + 1 ] <= s ]............1.20 ...0.34 ..50.75 ..21.69
[ x := a[ i % 16 + 1 ] < s ].............1.14 ...0.61 ..47.08 ..21.00
[ x := a[ i % 16 + 1 ] > s ].............1.42 ...0.73 ..53.98 ..22.42
[ ascan( a, i % 16 ) ]...................1.14 ...0.64 ..44.34 ..18.22
[ ascan( a, { |x| x == i % 16 } ) ]......7.34 ...7.38 .118.28 ..75.86
[ if i%1000==0;a:={};end; aadd(a,{i,1,...3.25 ...2.84 .113.38 ..79.86
[ x := a ]...............................0.36 ...0.19 ..21.00 ...8.45
[ x := {} ]..............................1.05 ...0.77 ..84.69 ..41.30
[ f0() ].................................0.14 ...0.11 ..38.09 ...8.58
[ f1( i ) ]..............................0.17 ...0.22 ..39.89 ..11.47
[ f2( c[1...8] ) ].......................0.31 ...0.23 ..16.39 ..12.44
[ f2( c[1...40000] ) ]...................0.30 ...0.30 ..33.03 ...6.30
[ f2( @c[1...40000] ) ]..................0.28 ...0.31 ..27.48 ..12.67
[ f2( @c[1...40000] ), c2 := c ].........0.36 ...0.28 ..40.31 ..13.05
[ f3( a, a2, s, i, s2, bc, i, n, x ) ]...0.92 ...0.75 ..35.00 ..21.53
[ f2( a ) ]..............................0.28 ...0.30 ..27.70 ...2.88
[ x := f4() ]............................1.42 ...1.42 ..82.25 ..38.75
[ x := f5() ]............................0.70 ...0.61 ..58.69 ..40.72
============================================= ======= ======= =======
[ total application time: ].............64.89 ..51.73 .148.38 .127.17
[ total real time: ]....................57.13 ..50.92 ..76.66 ..64.64
Brgds,
Viktor
More information about the Harbour
mailing list