I have been doing some build profiling over the weekend. When I run
IncrediBuild, computing dependencies takes about 30 seconds. Then one
CPU starts "performing custom build step" which is
V8Bindings_prebuild. In parallel, most dependencies like ICU compile
in the next minute.

Then it hangs for 3 minutes waiting for V8Bindings_prebuild.

Then it compiles all of WebCore and some remaining parts of Chrome in
the next 4 minutes, and links in 2 minutes.

Why is 1/3 of my time wasted waiting for a makefile to run? During
this time I see a continuous stream of sh.exe, perl.exe, and
cc1plus.exe getting spawned and killed. Looking at the makefile, this
happens >300 times, and each time perl has to search a bunch of
different directories of WebCore sources to find the file in question.

If I already have this step completed, IncrediBuild can compile all of
chrome_exe from scratch in 5:50 on my computer, which is really fast!
With a clean debug directory, it takes 8:57. It seems like this is a
really big waste of everybody's time. I don't entirely know what's
going on, and I barely know Perl, but it seems like there are two
options:

1) Improve the step to list the exact locations of each file, and to
only run perl once, iterating over the list in perl rather than in the
makefile. This loses the incremental aspect if you do change anything,
but most people aren't changing the IDL files. I bet this would make
it orders of magnitude faster.

2) Check in prebuilt V8 bindings. This means that the WebKit merger
would need to run an extra step, but everything would magically work
for everbody else. I really like this solution because I think the V8
bindings are the most common thing that causes weird build errors when
you sync after a new WebKit has been pulled, and I think it's also the
main reason that you have to physically delete the output directory
instead of doing a regular clean. It could be that having the correct
versions checked in saves everybody a lot of rebuilding in addition to
saving several minutes on each build.

I really like option #2. Does anybody have any thoughts on how well
this would work?

Brett

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to