make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU make 3.81beta4 released


From: Markus Mauhart
Subject: Re: GNU make 3.81beta4 released
Date: Sat, 21 Jan 2006 15:49:34 +0100

"Eli Zaretskii" <address@hidden> wrote ...
>
>> From: "Markus Mauhart" <address@hidden>
>> Date: Fri, 20 Jan 2006 23:29:12 +0100
>>
>> >> Btw, such successfull "-j 64"-build then sometimes uses ~50 compilers
>> >> in parallel - with my 1GB this is no problem with msvc71, while yet "-j 
>> >> 3" is
>> >> a big problem with mingw-gcc344 (both -O2).
>> >
>> > What do you mean by ``a big problem''?  Could you tell the details?
>>
>> consuming (allmost) too much memory - with mingw-gcc344 I had to stop it
>> cause it would take at least 100 times the "-j 1" time, and even with "-j 4"
>> I stopped it after ~1m cause 4 compilers sometimes concurrently touching
>> phys-RAM * 1.2 (1.5 including the rest of the system) is a significant
>> performance problem, at least with winXP.
>
> I tried "make -j" with MinGW building a program that needed 18 C
> source files to be compiled and then linked into a single executable.
> I don't see the problems you describe.  All I see is several
> compilations being started in parallel; the build takes 3 seconds,
> which in this case is not an improvement wrt the non-parallel build,
> but it's not slower, either.
>
> How much time does it take for the average GCC compile of a single
> file in your case, and how much time does it take with MSVC, for the
> package you were building?

I will post the necessary URLs to reproduce my tests today.

Please keep in mind that my "mode 1" means to include all c[++] files
of a sub-project into one temporary c[++] file which then is compiled
at once - so your test's unit was a single C-file, my unit is multiple
C++ - files concatenated.

A ususal c++ - pkg (complete build = 25 C++ and 10 C-pkgs):
15 cpp files, 200KB (all included into one file for compilation )
Including and using many non-trivial c++-headers.
-O2 Compilation in "mode 1" (all files included into one temp file):
    using msvc++:        6s
    using mingw-gcc344: 20s
But the biggest difference is memory consumption:
Gcc needs >= 10x more room, and it never releases (un-"commits") that
room during one 10s compilation, while MSVC seems to un-"commit".
As a result, w.r.t memory stress, I'd say 30 MSVC running in parallel
compare to 2 concurrent GCC's.

complete builds:
msvc        3m20s
msvc -j  2  1m42s  20-40MB committed
msvc -j 64  1m55s  usually 20-50 cl.exe living together
gcc        10m25s
gcc  -j  2  5m40s  300-600MB committed; the last (single-threaded) link takes 
25s
gcc  -j  3  6m08s


Maybe I'll find time to make screenshots of taskmgr.exe.


Best Regards,
Markus.







reply via email to

[Prev in Thread] Current Thread [Next in Thread]