Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-30 Thread Maurilio Longo
Mindaugas,

as I wrote earlier I did not see any difference as well unless i just call it
with -j  (without number), in this case I see both of my cores doing work.

I'm using the dragon media flavor of mingw.

Maurilio.


Mindaugas Kavaliauskas wrote:
 You can also try to reduce the optimization level, i.e. you can use -Os
 in MinGW flags. It should reduce the compilation time and final binaries
 will be slower then the one created by BCC though still faster.

 I'm trying another approach :) Upgrading from Celeron to Core i5. It
 should help a little. :)
 
 
 Hi,
 
 
 in ChangeLog I found some -jn option for parallel compile jobs. How
 can it use it?
 
 I'm trying:
   win-make.exe -j4
 but I see no compile speed improvement.
 
 
 Regards,
 Mindaugas
 
 ___
 Harbour mailing list (attachment size limit: 40KB)
 Harbour@harbour-project.org
 http://lists.harbour-project.org/mailman/listinfo/harbour
 

-- 
 __
|  |  | |__| Maurilio Longo
|_|_|_|| farmaconsult s.r.l.


___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-29 Thread Mindaugas Kavaliauskas

You can also try to reduce the optimization level, i.e. you can use -Os
in MinGW flags. It should reduce the compilation time and final binaries
will be slower then the one created by BCC though still faster.


I'm trying another approach :) Upgrading from Celeron to Core i5. It 
should help a little. :)



Hi,


in ChangeLog I found some -jn option for parallel compile jobs. How 
can it use it?


I'm trying:
  win-make.exe -j4
but I see no compile speed improvement.


Regards,
Mindaugas

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-29 Thread Mindaugas Kavaliauskas

Przemysław Czerpak wrote:

This option enables simultaneous compilation of different files.
It means that it will not change the compilation of single file
at all but when many files have to be compiled and -jn is passed
as GNU make parameter then it creates upto n processes and each
of them is used to compile different files. So the total compilation
time of is greatly reduced on multi CPU machine.
Personally I'm using -j4 or -j5 on my 3 CPU machine and it reduces
total Harbour compilation time about 3 times.


Hi,


I'm trying to compile the whole Harbour on Core i5 (2 cores + 
hyper-threading, so, 4 virtual CPU are visible to the system). But I see 
no speed improvement of -j4 using:

  win-make.exe -j4
Is this correct way to pass -j4 option? I though, that maybe I need to 
pass in a different way:

  set HB_MAKE_OPTIONS=-j4
or something like that, to make -j work


Regards,
Mindaugas
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-29 Thread Przemysław Czerpak
On Mon, 29 Mar 2010, Mindaugas Kavaliauskas wrote:

Hi,

 I'm trying to compile the whole Harbour on Core i5 (2 cores +
 hyper-threading, so, 4 virtual CPU are visible to the system). But I
 see no speed improvement of -j4 using:
   win-make.exe -j4
 Is this correct way to pass -j4 option? I though, that maybe I need

For me it's enough. I'm using:
   make -j5
I even tested MinGW cross build and it works very nice
but maybe this win-make.exe does not support it.

 to pass in a different way:
   set HB_MAKE_OPTIONS=-j4
 or something like that, to make -j work

I do not know about it. Maybe Viktor can help.

best regards,
Przemek
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-29 Thread Viktor Szakáts
 I'm trying to compile the whole Harbour on Core i5 (2 cores +
 hyper-threading, so, 4 virtual CPU are visible to the system). But I
 see no speed improvement of -j4 using:
  win-make.exe -j4
 Is this correct way to pass -j4 option? I though, that maybe I need
 
 For me it's enough. I'm using:
   make -j5
 I even tested MinGW cross build and it works very nice
 but maybe this win-make.exe does not support it.

It should support it. It's standard 3.81 build.

 to pass in a different way:
  set HB_MAKE_OPTIONS=-j4
 or something like that, to make -j work
 
 I do not know about it. Maybe Viktor can help.

No such trick is needed.

Brgds,
Viktor

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-26 Thread Mindaugas Kavaliauskas

Hi,


Przemysław Czerpak wrote:

It's important only if you have to often recompile very big C files
which can be hardly optimized.


It happens if you develop and compile Harbour itself, but not the final 
application only.



You can also try to reduce the optimization level, i.e. you can use -Os
in MinGW flags. It should reduce the compilation time and final binaries
will be slower then the one created by BCC though still faster.


I'm trying another approach :) Upgrading from Celeron to Core i5. It 
should help a little. :) Though, many new features of Win 7 is 
annoying. Trying to switch of everything. Does anyone know how to remove 
Favorites and Libraries entries form navigation panel of Explorer. I 
also want to remove this Organize/Include in library/Share with/New 
folder toolbar line. Any suggestions?


Classic style start menu seems to be gone forever...


Regards,
Mindaugas
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-20 Thread Przemysław Czerpak
On Fri, 19 Mar 2010, Mindaugas Kavaliauskas wrote:

Hi,

 I've included BCC55 for comparison. It's running at half the
 overall speed compared to 4.5 64-bit.
 Ec... I'm still using BCC, because... it compiles f.e.
 \external\sqlite3 in 2.74 s, and MGW compiles it in 3 minutes 3.25
 s, i.e. 67 times slower...

It's important only if you have to often recompile very big C files
which can be hardly optimized. So you can use BCC when you are working
on such files and MinGW to create final binaries.
You can also try to reduce the optimization level, i.e. you can use -Os
in MinGW flags. It should reduce the compilation time and final binaries
will be slower then the one created by BCC though still faster.

best regards,
Przemek
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-20 Thread Przemysław Czerpak
On Fri, 19 Mar 2010, Maurilio Longo wrote:

Hi,

 for real code, doing I/O on a network share, the difference could be lower,
 though.

Network IO operations are extremely expensive so they will consume most
of time anyhow in local IO operations are not such significant and there
are time consuming operations which can be done locally, i.e. reindexing.
Please also note that usually *nix applications are executed remotely
on the server side only so the execution speed is not reduced by network
overhead at all.

best regards,
Przemek
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


[Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread Viktor Szakáts
Hi All,

In summary with 4.5 there is a 7-8% speed increase 
compared to 4.4.4 in 64-bit mode and C++ doesn't 
give any speed advantage here. Binary sizes are 
similar, sometimes a big larger sometimes a bit 
smaller.

I've included BCC55 for comparison. It's running 
at half the overall speed compared to 4.5 64-bit.

---
2010.03.19 Windows 7 6.1.7600
THREADS: 0
N_LOOPS: 100

[1] Harbour 2.1.0dev (Rev. 14188) MinGW GNU C 4.5 (64-bit) x86-64
[2] Harbour 2.1.0dev (Rev. 14189) MinGW GNU C++ 4.5 (64-bit) x86-64
[3] Harbour 2.1.0dev (Rev. 14130) MinGW GNU C 4.4.4 (64-bit) x86-64
[4] Harbour 2.1.0dev (Rev. 14178) Borland C++ 5.5.1 (32-bit) x86

 [1][2]
[3][4]
[ T000: empty loop overhead ]...0.02 ..0.02 
..0.02 ..0.05
 == 
== ==
[ T001: x := L_C ]..0.02 ..0.02 
..0.03 ..0.02
[ T002: x := L_N ]..0.00 ..0.02 
..0.02 ..0.02
[ T003: x := L_D ]..0.00 ..0.00 
..0.00 ..0.02
[ T004: x := S_C ]..0.02 ..0.03 
..0.03 ..0.05
[ T005: x := S_N ]..0.03 ..0.02 
..0.05 ..0.03
[ T006: x := S_D ]..0.02 ..0.03 
..0.02 ..0.03
[ T007: x := M-M_C ]...0.02 ..0.02 
..0.03 ..0.05
[ T008: x := M-M_N ]...0.03 ..0.03 
..0.05 ..0.05
[ T009: x := M-M_D ]...0.02 ..0.02 
..0.03 ..0.03
[ T010: x := M-P_C ]...0.03 ..0.03 
..0.03 ..0.05
[ T011: x := M-P_N ]...0.03 ..0.02 
..0.03 ..0.03
[ T012: x := M-P_D ]...0.02 ..0.02 
..0.03 ..0.05
[ T013: x := F_C ]..0.09 ..0.09 
..0.11 ..0.14
[ T014: x := F_N ]..0.14 ..0.11 
..0.11 ..0.17
[ T015: x := F_D ]..0.06 ..0.05 
..0.06 ..0.09
[ T016: x := o:Args ]...0.08 ..0.08 
..0.09 ..0.14
[ T017: x := o[2] ].0.03 ..0.05 
..0.05 ..0.09
[ T018: round( i / 1000, 2 ) ]..0.09 ..0.11 
..0.11 ..0.17
[ T019: str( i / 1000 ) ]...0.27 ..0.22 
..0.23 ..0.55
[ T020: val( s ) ]..0.11 ..0.11 
..0.11 ..0.22
[ T021: val( a [ i % 16 + 1 ] ) ]...0.17 ..0.16 
..0.19 ..0.38
[ T022: dtos( d - i % 1 ) ].0.16 ..0.17 
..0.19 ..0.33
[ T023: eval( { || i % 16 } ) ].0.20 ..0.22 
..0.23 ..0.30
[ T024: eval( bc := { || i % 16 } ) ]...0.11 ..0.14 
..0.13 ..0.20
[ T025: eval( { |x| x % 16 }, i ) ].0.16 ..0.17 
..0.17 ..0.27
[ T026: eval( bc := { |x| x % 16 }, i ) ]...0.11 ..0.13 
..0.14 ..0.22
[ T027: eval( { |x| f1( x ) }, i ) ]0.22 ..0.20 
..0.23 ..0.33
[ T028: eval( bc := { |x| f1( x ) }, i ) ]..0.16 ..0.14 
..0.19 ..0.28
[ T029: eval( bc := ({ |x| f1( x ) }), i ) ].0.17 ..0.19 
..0.19 ..0.28
[ T030: x := ( f1( + str(i) + ) ) ]1.34 ..1.41 
..1.33 ..2.42
[ T031: bc := ( {|x|f1(x)} ), eval( bc, i ) ]1.58 ..1.66 
..1.55 ..3.08
[ T032: x := valtype( x ) +  valtype( i ) ].0.17 ..0.17 
..0.22 ..0.34
[ T033: x := strzero( i % 100, 2 ) $ a[ i % 16 + 1 ] ]..0.30 ..0.30 
..0.33 ..0.64
[ T034: x := a[ i % 16 + 1 ] == s ].0.11 ..0.11 
..0.13 ..0.23
[ T035: x := a[ i % 16 + 1 ] = s ]..0.13 ..0.11 
..0.13 ..0.27
[ T036: x := a[ i % 16 + 1 ] = s ].0.13 ..0.13 
..0.14 ..0.27
[ T037: x := a[ i % 16 + 1 ] = s ].0.13 ..0.13 
..0.14 ..0.27
[ T038: x := a[ i % 16 + 1 ]  s ]..0.13 ..0.13 
..0.14 ..0.27
[ T039: x := a[ i % 16 + 1 ]  s ]..0.13 ..0.11 
..0.14 ..0.27
[ T040: ascan( a, i % 16 ) ]0.16 ..0.16 
..0.16 ..0.25
[ T041: ascan( a, { |x| x == i % 16 } ) ]...1.23 ..1.28 
..1.41 ..2.34
[ T042: iif( i%1000==0, a:={}, ) , aadd(a,{i,1,.T.,s,s2,a2 ]0.36 ..0.36 
..0.44 ..0.72
[ T043: x := a ]0.02 ..0.02 
..0.02 ..0.05
[ T044: x := {} ]...0.05 ..0.05 
..0.06 ..0.09
[ T045: f0() ]..0.03 ..0.03 
..0.05 ..0.03

Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread Viktor Szakáts
 Viktor Szakáts wrote:
 I've included BCC55 for comparison. It's running at half the overall speed 
 compared to 4.5 64-bit.
 
 Ec... I'm still using BCC, because... it compiles f.e. \external\sqlite3 
 in 2.74 s, and MGW compiles it in 3 minutes 3.25 s, i.e. 67 times slower...

Yes, it's good for draft builds.

Though at least for live builds used by real users 
IMO it's worth to take the pain of a longer build 
to offer a faster working application. It's a one 
time overhead on developer's side and and permanent 
and noticeable gain on the users' side.

Brgds,
Viktor

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread Maurilio Longo
Viktor,

for real code, doing I/O on a network share, the difference could be lower,
though.

Maurilio.

Viktor Szakáts wrote:
 Viktor Szakáts wrote:
 I've included BCC55 for comparison. It's running at half the overall speed 
 compared to 4.5 64-bit.
 Ec... I'm still using BCC, because... it compiles f.e. \external\sqlite3 
 in 2.74 s, and MGW compiles it in 3 minutes 3.25 s, i.e. 67 times slower...
 
 Yes, it's good for draft builds.
 
 Though at least for live builds used by real users 
 IMO it's worth to take the pain of a longer build 
 to offer a faster working application. It's a one 
 time overhead on developer's side and and permanent 
 and noticeable gain on the users' side.
 
 Brgds,
 Viktor
 
 ___
 Harbour mailing list (attachment size limit: 40KB)
 Harbour@harbour-project.org
 http://lists.harbour-project.org/mailman/listinfo/harbour
 

-- 
 __
|  |  | |__| Maurilio Longo
|_|_|_|| farmaconsult s.r.l.


___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread Viktor Szakáts
Hi Maurilio,

 Viktor,
 
 for real code, doing I/O on a network share, the difference could be lower,
 though.

Yes, of course speedtst is not the one-and-only 
ultimate bench, though it still shows big difference 
in a lot of important places, f.e. a table upgrade 
or reindexing on server. Double the speed is big 
difference. 

BTW I can feel much smaller difference even with 
procedural CUI app, and this is pbly much noticeable 
in OOP and/or GUI apps where much more .prg code is 
pumped trough the HVM/CPU. Fast execution can most 
probably make these apps to behave snappier and 
thus user experience better.

It's IMO also important to actually exploit the 
possibilities of hardware and not waste the cycles 
/ wattage / users' time, nerves / etc.

BTW, it'd be interesting exercise to see how faster 
gcc/mingw gets with lower optimization levels and how 
execution speed drops.

Brgds,
Viktor

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread francesco perillo
 Though at least for live builds used by real users
 IMO it's worth to take the pain of a longer build
 to offer a faster working application. It's a one
 time overhead on developer's side and and permanent
 and noticeable gain on the users' side.

No problem for a lng one-time compiler build but I believe
that also prg compilation is slower... hbmk2 incremental helps a lot
but it is anyway a longer edit-compile-debug cycle
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread Qatan

Hello Francesco,

   Just to mention: Did you try the hbmk2 -jobs=n option.
   This option starts n compilaton threads (multiprocess plataforms 
only).

   It works very well for me and reduces the compilation time.

Qatan

- Original Message - 
From: francesco perillo fperi...@gmail.com

To: Harbour Project Main Developer List. harbour@harbour-project.org
Sent: Friday, March 19, 2010 2:20 PM
Subject: Re: [Harbour] mingw 4.5.0 benchmarks



Though at least for live builds used by real users
IMO it's worth to take the pain of a longer build
to offer a faster working application. It's a one
time overhead on developer's side and and permanent
and noticeable gain on the users' side.


No problem for a lng one-time compiler build but I believe
that also prg compilation is slower... hbmk2 incremental helps a lot
but it is anyway a longer edit-compile-debug cycle
___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour 


___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour


Re: [Harbour] mingw 4.5.0 benchmarks

2010-03-19 Thread Viktor Szakáts
Compilation process is obviously slower than for 
a non-optimizing compiler, also for .prg since 
it's also compiled by C compiler.

Here it should be noted that plain -gc2 built 
.c files can just be compiled using any C compiler 
option (ie. without optimization), since it cannot 
be optimized anyway. [ maybe such optimization can 
be added to hbmk2, to turn off C compiler optimization 
in this scenario. But it can be done manually as well, 
for those who use default = -gc2 options. ]

[ In -gc3 mode the situation is different, but 
-gc3 isn't very good for app level code in general. ]

Anyway for interim / local / developer's build it's 
fine to use C compiler without optimizations (and 
maybe with enabled debugging option), and for final 
build use the slow, but optimal settings. That's 
the whole idea of release vs debug builds.

With Harbour/hbmk2 it's quite easy to switch 
compilers, or toggle optimizations.

Brgds,
Viktor

On 2010 Mar 19, at 18:20, francesco perillo wrote:

 Though at least for live builds used by real users
 IMO it's worth to take the pain of a longer build
 to offer a faster working application. It's a one
 time overhead on developer's side and and permanent
 and noticeable gain on the users' side.
 
 No problem for a lng one-time compiler build but I believe
 that also prg compilation is slower... hbmk2 incremental helps a lot
 but it is anyway a longer edit-compile-debug cycle
 ___
 Harbour mailing list (attachment size limit: 40KB)
 Harbour@harbour-project.org
 http://lists.harbour-project.org/mailman/listinfo/harbour

___
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour