>
> I was an early adopter, and I am all for a scons based build. That
> said, the Linux team is already dieing with how slow it is. We are
> only building test shell, which is a fraction of the code of Chromium.
> Can we spend a few days of smart engineering and at least make some
> progress in this direction? It seems like performance hasn't really
> been addressed yet, and it is really frustrating.
>
Agreed. One of the intents of foisting pain on the rest of the world now is
to free up enough concentrated time for some smart engineering on these
issues.
I've been profiling the webkit build on Windows over the past several days,
which has confirmed the long -I lists as the primary culprit. I've appended
some Python profile data below pointing to the large number of calls to
get_found_includes(), which is the workhorse of the logic that finds a .h
file in the -I directories. (Tip o' the hat to our own Jim Roskind, who
happens to be the person who wrote the Python profiler.)
The low-hanging fruit here is that it's doing a linear search of the
directories, for each .h file and object file. There's some caching of
intermediate results going on, which has made the performance of less
extreme configurations than ours at least acceptable. This points out,
though, that this really needs a different algorithmic approach so that we
can do the search in O(n), not O(n*m*j), which I think we can do with
collapsing the entries of all the -I directories into a single lookup
dictionary for each path.
If anyone has an itch for a 20% project and would like to pitch in on
looking at optimizations, please let me know. The big drawback to my being
initimately familiar with this code base is letting my historical knowledge
blind me to other, better ways of doing things. Fresh sets of eyes on any
parts of this are very welcome.
--SK
39337904 function calls (36225727 primitive calls) in 155.015 CPU
seconds
Ordered by: internal time
List reduced from 1654 to 10 due to restriction <10>
ncalls tottime percall cumtime percall filename:lineno(function)
153963 78.487 0.001 94.898 0.001
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Node/FS.py:2454(get_found_includes)
12962 9.390 0.001 15.116 0.001
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Node/FS.py:2941(find_file)
483243 5.000 0.000 7.130 0.000
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Node/FS.py:480(__getattr__)
1065406/378976 3.665 0.000 26.811 0.000 ~:0(<built-in method
sub>)
5328477 3.291 0.000 3.291 0.000 ~:0(<isinstance>)
318288/134274 2.758 0.000 23.459 0.000
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Subst.py:397(expand)
187765 2.444 0.000 12.976 0.000
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Subst.py:256(subst_dict)
247232/163397 2.377 0.000 37.022 0.000
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Subst.py:370(scons_subst)
1196120/719778 2.178 0.000 8.685 0.000 ~:0(<getattr>)
708455/128574 2.138 0.000 26.550 0.000
/usr/local/google/home/sgk/src/chrome/trunk1/src/third_
party/scons/scons-local/SCons/Subst.py:480(substitute)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Chromium-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/chromium-dev?hl=en
-~----------~----~----~----~------~----~------~--~---