>
> > Sorry, I didn't explain the filenames:
> > Harbour -gc3 + speedtst -gc2 (yesterday's builds):
> >    st-hb-icc-gc2.txt
> >    st-hb-msvc-gc2.txt
> >    st-hb-mingw433-gc2.txt
> > Harbour -gc2 + speedtst -gc2 (recent builds):
> >    st-hb-msvc-gc2-gc2.txt
> >    st-hb-mingw433-gc2-gc2.txt
>
> Viktor, 2-3 degrees difference in room temperature has noticeable speed
> overhead for modern computers and I do not joke. It's documented by CPU
> producers. Test should be done in as close period of time as possible
> or repeated many times in long periods to well catch average results.


In recent days I always did a reference measurement
using a known combination. I did it now too, and it stayed
well within the second threshold, it was in fact almost
identical (I used MSVC -gc3 ST mode). My environment
was pretty static in the last few days (both ambient and
inside the computer), I've always shut down all processes and
apps while running the tests, there was no network activity
and I didn't touch the mouse/keyboard. These values are
all repeatable.


> I can believe in many different things but I do not belive that:
>
> 03/19/09 23:05:24 Windows XP 5.1.2600 Service Pack 3
> Harbour-gc2+speedtst-gc2 gives:
> [ T000: empty loop overhead ]...................................0.06
>
> Harbour-gc3+speedtst-gc2 gives:
> 03/19/09 23:45:50 Windows XP 5.1.2600 Service Pack 3
> [ T000: empty loop overhead ]...................................0.11
>
> :-)


In fact it's not funny.

In this specific test (and only this one, it was the last one),
I was impatient and run the test while the last part of the
build process (zip.exe) didn't end yet. And you spotted it.
So I've rerun this test, see it at the end of this mail. Don't
discredit the rest of the results though, they were all run
in clean idle states.

The 1-st one for sure in not yesterday's builds and for sure speedtst
> was not compiled with -gc2 but with -gc3 in this test.


Are you talking about st-hb-icc-gc2.txt ?

It *is* a -gc3 default build I did on 2008-03-18, and
speedtst was compiled with -gc2 command.
I can send you the .exe if you don't believe me.

No offence but I think that in similar way you found that -ko
> gives slower code what is technically impossible because it only
> reduce the code a little bit by stripping some dummy expressions
> or replacing:
>   <exp>
>   1
>   plus
> with:
>   <exp>
>   inc


In -gc3 the only difference is a parameter passed
in normal mode and no parameter in -ko mode
passed to a different hb_xvm*() function. That
different function looks more heavy than the other,
that might explain. The difference is marginal, but
repeatable on my system. In -gc3 there is no
change in number of HVM calls made in -ko
and non--ko modes.

Specifically:
-ko mode:
if( hb_xvmDec() ) break;
default mode:
if( hb_xvmAddInt( -1 ) ) break;


> Anyhow now I would like to should you sth funny what can help you
> in the future in checking the results.


Sorry, I didn't get this :/

Finally the repeated "st-hb-mingw433-gc2-gc2.txt" result:
---
03/20/09 01:39:22 Windows XP 5.1.2600 Service Pack 3
Harbour 1.1.0dev (Rev. 10660) MinGW GNU C 4.3.3 (32-bit)
THREADS: 0
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.06
====================================================================
[ T001: x := L_C ]..............................................0.11
[ T002: x := L_N ]..............................................0.05
[ T003: x := L_D ]..............................................0.05
[ T004: x := S_C ]..............................................0.09
[ T005: x := S_N ]..............................................0.05
[ T006: x := S_D ]..............................................0.03
[ T007: x := M->M_C ]...........................................0.08
[ T008: x := M->M_N ]...........................................0.06
[ T009: x := M->M_D ]...........................................0.06
[ T010: x := M->P_C ]...........................................0.09
[ T011: x := M->P_N ]...........................................0.06
[ T012: x := M->P_D ]...........................................0.05
[ T013: x := F_C ]..............................................0.20
[ T014: x := F_N ]..............................................0.38
[ T015: x := F_D ]..............................................0.14
[ T016: x := o:Args ]...........................................0.25
[ T017: x := o[2] ].............................................0.17
[ T018: round( i / 1000, 2 ) ]..................................0.66
[ T019: str( i / 1000 ) ].......................................2.98
[ T020: val( s ) ]..............................................0.47
[ T021: val( a [ i % 16 + 1 ] ) ]...............................0.78
[ T022: dtos( d - i % 10000 ) ].................................0.66
[ T023: eval( { || i % 16 } ) ].................................0.84
[ T024: eval( bc := { || i % 16 } ) ]...........................0.39
[ T025: eval( { |x| x % 16 }, i ) ].............................0.52
[ T026: eval( bc := { |x| x % 16 }, i ) ].......................0.41
[ T027: eval( { |x| f1( x ) }, i ) ]............................0.63
[ T028: eval( bc := { |x| f1( x ) }, i ) ]......................0.55
[ T029: eval( bc := &("{ |x| f1( x ) }"), i ) ].................0.55
[ T030: x := &( "f1(" + str(i) + ")" ) ]........................4.53
[ T031: bc := &( "{|x|f1(x)}" ), eval( bc, i ) ]................5.27
[ T032: x := valtype( x ) +  valtype( i ) ].....................0.58
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..........2.31
[ T034: x := a[ i % 16 + 1 ] == s ].............................0.55
[ T035: x := a[ i % 16 + 1 ] = s ]..............................0.56
[ T036: x := a[ i % 16 + 1 ] >= s ].............................0.55
[ T037: x := a[ i % 16 + 1 ] <= s ].............................0.55
[ T038: x := a[ i % 16 + 1 ] < s ]..............................0.56
[ T039: x := a[ i % 16 + 1 ] > s ]..............................0.56
[ T040: ascan( a, i % 16 ) ]....................................0.53
[ T041: ascan( a, { |x| x == i % 16 } ) ].......................4.50
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]....1.28
[ T043: x := a ]................................................0.11
[ T044: x := {} ]...............................................0.22
[ T045: f0() ]..................................................0.19
[ T046: f1( i ) ]...............................................0.23
[ T047: f2( c[1...8] ) ]........................................0.25
[ T048: f2( c[1...40000] ) ]....................................0.27
[ T049: f2( @c[1...40000] ) ]...................................0.25
[ T050: f2( @c[1...40000] ), c2 := c ]..........................0.36
[ T051: f3( a, a2, s, i, s2, bc, i, n, x ) ]....................0.66
[ T052: f2( a ) ]...............................................0.25
[ T053: x := f4() ].............................................1.28
[ T054: x := f5() ].............................................0.45
[ T055: x := space(16) ]........................................0.30
[ T056: f_prv( c ) ]............................................0.64
====================================================================
[ total application time: ]....................................42.77
[ total real time: ]...........................................43.01
---

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

Reply via email to