Hi Przemek,

Przemyslaw Czerpak ha scritto:
On Sat, 04 Oct 2008, Francesco Saverio Giudice wrote:

Hi Francesco,

Many thanks for your results.
Looks that there in no important difference between DL-MM and BCC-MM in
real MT programs in your system. DL has a little bit better performance.
In my test in Linux DL-MM in MT mode was killing the performance
in MT+ test in comparison to default SUSE malloc when in ST mode
it gives nearly the same results. The difference is such huge that
Harbour overhead is unimportant at all and it's even hard to measure.
So I would like to also test the performance without memory allocation
in Windows. I've just added --exclude option to which allows to disable
all tests which allocates memory in test loop.
If possible please also make this tests again using current SVN speedtst
with option --exclude=mem, f.e.:
   speetst.exe --exclude=mem
It doesn't matter which memory manager you will use. You can use the
default one.

Once again many thanks for your help.


I was already compiling after your changelog ;-)

Here results:

J:\cvs\harbourSVN_trunk\tests>speedtst.exe //info
Harbour Terminal: Windows native console
Harbour 1.1.0dev (Rev. 9545)
Windows Vista 6.0.6001 Service Pack 1
DS avail=1352780KB  OS avail=2064552KB  EMM avail=0KB  MemStat:Off  MT:Off

10/04/08 21:37:25 Windows Vista 6.0.6001 Service Pack 1
Harbour 1.1.0dev (Rev. 9545) Borland C++ 5.5.1 (32 bit)
N_LOOPS =    1000000
                                                       ST    MT   MT+
[ empty loop overhead ]..............................0.09..0.09..0.09
=====================================================================
[ x := L_C ].........................................0.09..0.12..4.10
[ x := L_N ].........................................0.06..0.09..9.20
[ x := L_D ].........................................0.09..0.14..3.04
[ x := S_C ].........................................0.11..0.16.11.93
[ x := S_N ].........................................0.12..0.11..2.92
[ x := S_D ].........................................0.09..0.09.11.89
[ x := M_C ].........................................0.09..0.14..5.87
[ x := M_N ].........................................0.08..0.11.11.72
[ x := M_D ].........................................0.08..0.09..4.98
[ x := P_C ].........................................0.11..0.12.12.90
[ x := P_N ].........................................0.11..0.08..7.85
[ x := P_D ].........................................0.09..0.09.11.70
[ x := F_C ].........................................0.16..0.30.25.33
[ x := F_N ].........................................0.19..0.25.15.97
[ x := F_D ].........................................0.09..0.11..9.31
[ x := o:GenCode ]...................................0.27..0.30.18.50
[ x := o[8] ]........................................0.22..0.23.12.68
[ round( i / 1000, 2 ) ].............................0.23..0.31.20.40
[ str( i / 1000 ) ]..................................0.84..1.00.35.46
[ val( s ) ].........................................0.30..0.33.19.28
[ val( a [ i % 16 + 1 ] ) ]..........................0.62..0.75.23.31
[ dtos( d - i % 10000 ) ]............................0.44..0.73.37.49
[ eval( { || i % 16 } ) ]............................0.39..0.97.41.51
[ eval( bc := { || i % 16 } ) ]......................0.30..0.42.21.23
[ eval( { |x| x % 16 }, i ) ]........................0.41..0.70.34.48
[ eval( bc := { |x| x % 16 }, i ) ]..................0.33..0.44.21.68
[ eval( { |x| f1( x ) }, i ) ].......................0.50..0.92.34.41
[ eval( bc := { |x| f1( x ) }, i ) ].................0.55..0.67.24.41
[ x := &( "f1(" + str(i) + ")" ) ]...................3.01..4.40.56.18
[ bc := &( "{|x|f1(x)}" ); eval( bc, i ) ]...........3.56..5.38.60.04
[ x := valtype( x ) +  valtype( i ) ]................0.51..0.81.34.01
[ x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ].....1.09..1.37.34.98
[ x := a[ i % 16 + 1 ] == s ]........................0.48..0.50.21.42
[ x := a[ i % 16 + 1 ] = s ].........................0.51..0.59.23.93
[ x := a[ i % 16 + 1 ] >= s ]........................0.51..0.64.21.84
[ x := a[ i % 16 + 1 ] <= s ]........................0.50..0.66.23.93
[ x := a[ i % 16 + 1 ] < s ].........................0.53..0.62.21.78
[ x := a[ i % 16 + 1 ] > s ].........................0.48..0.66.24.15
[ ascan( a, i % 16 ) ]...............................0.31..0.48.18.39
[ ascan( a, { |x| x == i % 16 } ) ]..................3.87..5.37.50.59
[ if i%1000==0;a:={};end; aadd(a,{i,1,.T.,s,s2,a2,b..1.73..2.14.38.74
[ x := a ]...........................................0.09..0.12.13.65
[ x := {} ]..........................................0.12..0.39.27.77
[ f0() ].............................................0.11..0.12.13.82
[ f1( i ) ]..........................................0.22..0.27.14.09
[ f2( c[1...8] ) ]...................................0.19..0.28.18.89
[ f2( c[1...40000] ) ]...............................0.22..0.30.14.60
[ f2( @c[1...40000] ) ]..............................0.22..0.23.18.24
[ f2( @c[1...40000] ), c2 := c ].....................0.23..0.27.15.48
[ f3( a, a2, s, i, s2, bc, i, n, x ) ]...............0.72..0.90.24.40
[ f2( a ) ]..........................................0.20..0.30.14.38
[ x := f4() ]........................................0.69..0.92.33.79
[ x := f5() ]........................................0.34..0.55.31.11
=====================================================================
[ total application time: ].........................32.40.43.04.61.12
[ total real time: ]................................33.68.44.35.33.60


J:\cvs\harbourSVN_trunk\tests>speedtst.exe --exclude=mem //info
Harbour Terminal: Windows native console
Harbour 1.1.0dev (Rev. 9545)
Windows Vista 6.0.6001 Service Pack 1
DS avail=1349184KB  OS avail=2064552KB  EMM avail=0KB  MemStat:Off  MT:Off

10/04/08 21:41:51 Windows Vista 6.0.6001 Service Pack 1
Harbour 1.1.0dev (Rev. 9545) Borland C++ 5.5.1 (32 bit)
N_LOOPS =    1000000
                                                       ST    MT   MT+
[ empty loop overhead ]..............................0.08..0.09..0.08
=====================================================================
[ x := L_C ].........................................0.11..0.14..2.04
[ x := L_N ].........................................0.09..0.11..8.74
[ x := L_D ].........................................0.09..0.11..0.87
[ x := S_C ].........................................0.09..0.17.10.87
[ x := S_N ].........................................0.09..0.08..8.97
[ x := S_D ].........................................0.09..0.09..9.70
[ x := M_C ].........................................0.11..0.16.10.81
[ x := M_N ].........................................0.12..0.11.10.56
[ x := M_D ].........................................0.12..0.11.10.02
[ x := P_C ].........................................0.09..0.16.11.53
[ x := P_N ].........................................0.12..0.09..9.98
[ x := P_D ].........................................0.12..0.11.10.62
[ x := F_C ].........................................0.20..0.31.14.52
[ x := F_N ].........................................0.25..0.27.14.63
[ x := F_D ].........................................0.14..0.14.10.19
[ x := o:GenCode ]...................................0.25..0.33.16.02
[ x := o[8] ]........................................0.25..0.23.13.42
[ round( i / 1000, 2 ) ].............................0.30..0.36.17.11
[ val( s ) ].........................................0.27..0.36.16.19
[ val( a [ i % 16 + 1 ] ) ]..........................0.56..0.70.20.23
[ eval( bc := { || i % 16 } ) ]......................0.28..0.39.16.91
[ eval( bc := { |x| x % 16 }, i ) ]..................0.37..0.45.18.77
[ eval( bc := { |x| f1( x ) }, i ) ].................0.51..0.61.19.08
[ x := a[ i % 16 + 1 ] == s ]........................0.53..0.61.20.06
[ x := a[ i % 16 + 1 ] = s ].........................0.53..0.67.18.83
[ x := a[ i % 16 + 1 ] >= s ]........................0.50..0.62.20.20
[ x := a[ i % 16 + 1 ] <= s ]........................0.50..0.62.18.74
[ x := a[ i % 16 + 1 ] < s ].........................0.50..0.66.20.28
[ x := a[ i % 16 + 1 ] > s ].........................0.51..0.69.18.75
[ ascan( a, i % 16 ) ]...............................0.37..0.48.19.42
[ x := a ]...........................................0.14..0.14.10.31
[ f0() ].............................................0.14..0.12.11.56
[ f1( i ) ]..........................................0.23..0.27.14.77
[ f2( c[1...8] ) ]...................................0.17..0.25.16.05
[ f2( c[1...40000] ) ]...............................0.19..0.28.15.21
[ f2( @c[1...40000] ) ]..............................0.19..0.25.16.01
[ f2( @c[1...40000] ), c2 := c ].....................0.23..0.34.15.68
[ f3( a, a2, s, i, s2, bc, i, n, x ) ]...............0.80..0.90.20.14
[ f2( a ) ]..........................................0.22..0.22.14.98
=====================================================================
[ total application time: ].........................13.49.16.36.21.26
[ total real time: ]................................13.62.16.56.10.95

Now, without memory allocations, it seems very good !

Best Regards

Francesco


_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to