emacs-devel
[Top][All Lists]
Advanced

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

Re: Emacs build times on Windows


From: Christoph Scholtes
Subject: Re: Emacs build times on Windows
Date: Sat, 21 Apr 2012 06:05:42 -0600
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327 Thunderbird/11.0.1

Hi Eli,

On 4/21/2012 1:29 AM, Eli Zaretskii wrote:

On my i7 desktop (4 hyper-threaded cores), it takes 9 minutes, if I
use the -j10 switch to Make.  I suggest that you try -j6 in your
builds (if you use anything older than the current CVS of GNU Make,
you will also have to use the XMFLAGS="-j6" kludge as well, see
nt/INSTALL).  A parallel build should be faster.

Thanks. Does this work with mingw32-make also or do I have to use Cygwin (or MSYS?) to obtain gmake?

I tried building with mingw32-make -j2 but it did not result in any significant speedup.

The extra build with a large PURESIZE is not the problem.  Each one of
the 2 compilations of the Emacs sources takes 20 seconds on my machine
(using "make -j10"), which is negligibly short compared to the
compilation of Lisp files.  ("make -j10 info" takes another 5 seconds,
but only on the trunk, where I recently made the 'info' target of
nt/makefile.w32-in more parallel-friendly.)

On my system the extra PURESIZE build takes a lot longer than 20 seconds, but hopefully I can reduce that by using parallel compilation.

Very simple: the byte compilation on Posix platforms can run in
parallel, because it uses a generic .el.elc rule.  By contrast, on
Windows we compile them sequentially, one after the other, because the
recipe says:

   compile-CMD:
   #    -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r 
%%g
          for %%f in ($(COMPILE_FIRST)) do \
            $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f 
batch-byte-compile-if-not-done %%f
          for %%f in (. $(WINS)) do for %%g in (%%f/*.el) do \
            $(emacs) -l loaddefs $(BYTE_COMPILE_FLAGS) -f 
batch-byte-compile-if-not-done %%f/%%g

IOW, we use a shell-level loop to compile the files one by one.

So if you are looking for the place to significantly speed up the
bootstrap, the first place to look is to make the byte compilation use
a similar setup to what you see in lisp/Makefile.in.

I see. I will look into that. Thanks.

Christoph



reply via email to

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