I've rerun ST tests, now the values seem reasonable:

Startup loop to increase CPU clock...
10/04/08 02:34:54 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.08 ...0.03
================================================== =======
[ x := L_C ]..................................0.03 ...0.08
[ x := L_N ]..................................0.03 ...0.03
[ x := L_D ]..................................0.00 ...0.02
[ x := S_C ]..................................0.06 ...0.05
[ x := S_N ]..................................0.03 ...0.03
[ x := S_D ]..................................0.03 ...0.05
[ x := M_C ]..................................0.05 ...0.08
[ x := M_N ]..................................0.02 ...0.08
[ x := M_D ]..................................0.02 ...0.05
[ x := P_C ]..................................0.05 ...0.06
[ x := P_N ]..................................0.03 ...0.03
[ x := P_D ]..................................0.03 ...0.06
[ x := F_C ]..................................0.23 ...0.17
[ x := F_N ]..................................0.31 ...0.34
[ x := F_D ]..................................0.17 ...0.16
[ x := o:GenCode ]............................0.16 ...0.20
[ x := 0 ]....................................0.05 ...0.02
[ round( i / 1000, 2 ) ]......................0.38 ...0.33
[ str( i / 1000 ) ]...........................0.64 ...0.67
[ val( s ) ]..................................0.41 ...0.44
[ val( a [ i % 16 + 1 ] ) ]...................0.78 ...0.66
[ dtos( d - i % 10000 ) ].....................0.70 ...0.69
[ eval( { || i % 16 } ) ].....................0.53 ...0.64
[ eval( bc := { || i % 16 } ) ]...............0.33 ...0.38
[ eval( { |x| x % 16 }, i ) ].................0.53 ...0.45
[ eval( bc := { |x| x % 16 }, i ) ]...........0.38 ...0.41
[ eval( { |x| f1( x ) }, i ) ]................0.58 ...0.50
[ eval( bc := { |x| f1( x ) }, i ) ]..........0.53 ...0.36
[ x := &( "f1(" + str(i) + ")" ) ]............3.80 ...3.73
[ bc := &( "{|x|f1(x)}" ); eval( bc, i ) ]....4.67 ...4.64
[ x := valtype( x ) +  valtype( i ) ].........0.48 ...0.44
[ x := strzero( i % 100, 2 ) $ a[ i % 16 +....1.33 ...1.03
[ x := a[ i % 16 + 1 ] == s ].................0.47 ...0.42
[ x := a[ i % 16 + 1 ] = s ]..................0.59 ...0.44
[ x := a[ i % 16 + 1 ] >= s ].................0.53 ...0.42
[ x := a[ i % 16 + 1 ] <= s ].................0.53 ...0.48
[ x := a[ i % 16 + 1 ] < s ]..................0.56 ...0.42
[ x := a[ i % 16 + 1 ] > s ]..................0.56 ...0.47
[ ascan( a, i % 16 ) ]........................0.53 ...0.48
[ ascan( a, { |x| x == i % 16 } ) ]...........4.42 ...4.09
[ if i%1000==0;a:={};end; aadd(a,{i,1,.T.,....1.98 ...1.67
[ x := a ]....................................0.08 ...0.06
[ x := {} ]...................................0.19 ...0.17
[ f0() ]......................................0.19 ...0.09
[ f1( i ) ]...................................0.36 ...0.14
[ f2( c[1...8] ) ]............................0.36 ...0.16
[ f2( c[1...40000] ) ]........................0.44 ...0.19
[ f2( @c[1...40000] ) ].......................0.33 ...0.09
[ f2( @c[1...40000] ), c2 := c ]..............0.25 ...0.19
[ f3( a, a2, s, i, s2, bc, i, n, x ) ]........0.61 ...0.48
[ f2( a ) ]...................................0.20 ...0.16
[ x := f4() ].................................1.42 ...1.34
[ x := f5() ].................................0.38 ...0.36
================================================== =======
[ total application time: ]..................36.53 ..30.89
[ total real time: ].........................36.55 ..29.98

Brgds,
Viktor

On 2008.10.04., at 1:42, Przemyslaw Czerpak wrote:

On Sat, 04 Oct 2008, Szak�ts Viktor wrote:

Hi Viktor,

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.

Thanks,

Here are the ST results with new speedtst:
[...]
[ total application time: ]........................43.00 ..37.75
[ total real time: ]...............................37.47 ..31.09

I would seriously check how MSVC measure time.
In ST build "total application time" should be lower then
"total real time". I do not know why you have such results.
Maybe MSVC C-RTL executes some internal threads?


And here are the results with "OS/2" spinlocks enabled:
Harbour 1.1.0dev (Rev. 9542) (MT) Microsoft Visual C 15.0.26569 (32 bit)

Thank you very much but they will not be enabled for MSVC builds.
I created ASM inline functions only for GCC so in Windows you can
compare MinGW builds now. If it will give some noticeable speed
improvement then I can implement them also for other compilers.

Anyhow if possible I would like to ask also you about comparison
of MT+ mode with DL-MALLOC and standard MSVC malloc. I made some
test in Linux and DL-MALLOC results are not good :-(

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

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

Reply via email to