> > > 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