Yay data!  Thank you Evan.

If I'm reading your email correctly, your script can only account for
3MB (7.5%) of our binary.  :(  26.5MB (67%) is unknown to your script
and 20MB of what nm does see is labeled "read only data".  Of the 3MB
nm does understand, 700K (1.7% of the total final binary) is
SVGAnimatedProperty.h.

Seems like we need to know where the other 92.5% of our binary is
going before we take action against specific files.

-eric

On Mon, Nov 16, 2009 at 12:33 AM, Evan Martin <e...@chromium.org> wrote:
> I spent some quality time with nm.  With it I can take a release
> binary (so all the inlining and optimizations like dead code removal
> have been done) and display symbol sizes as well as which file they're
> from.
>
> My Release Linux build stripped is 39.5mb.  (The size bots show ~44mb,
> which I think is a Chrome vs Chromium thing.  It is curious how the
> Windows binary is nearly half the size of the Linux or Mac one.)
>
> My hacky script managed to total up stats for only 23mb of the binary.
>  I'm not sure where the rest is going but it could be the ICU data
> tables or even just references to external functions in shared
> objects.
>
> Below are the top offenders, in bytes, contributing to binary size
> (recall again that this is a release build), as measured by how nm
> attributes symbols to source files.  Note that it didn't attribute a
> bunch of code (for reasons I don't understand) and those are summed in
> the plain "code" entry below.
>
> And like I had guessed, SVG at the top!  I promise I didn't cook these
> to confirm my own hypothesis.  Also note that much of the rest is
> template-heavy code -- I was surprised to see logging.h scores almost
> 100kb.
>
>  2043226 read only data
>  762291 third_party/WebKit/WebCore/svg/SVGAnimatedProperty.h
>  394334 /usr/include/c++/4.4/bits/vector.tcc
>  270298 /usr/include/c++/4.4/bits/stl_tree.h
>  262889 uninitialized data
>  230389 code
>  196369 ./base/task.h
>  187574 third_party/WebKit/JavaScriptCore/wtf/HashTable.h
>  184647 third_party/WebKit/JavaScriptCore/wtf/HashMap.h
>  157126 ./ipc/ipc_message_utils.h
>  140424 v8/src/x64/codegen-x64.cc
>  136807 third_party/libxml/xmlschemas.c
>  117240 third_party/WebKit/WebCore/css/CSSStyleSelector.cpp
>  113895 v8/src/runtime.cc
>  103056 chrome/renderer/render_view.cc
>   97702 ./base/logging.h
>   95653 third_party/glew/src/glew.c
>   95389 third_party/libxml/parser.c
>   89488 /usr/include/c++/4.4/bits/stl_algo.h
>   84431 third_party/WebKit/JavaScriptCore/wtf/Vector.h
>   83865 v8/src/objects.cc
>   82528 third_party/icu/source/common/uchar_props_data.c
>   82042 third_party/WebKit/WebCore/css/CSSParser.cpp
>   81699 third_party/WebKit/WebCore/dom/Document.cpp
>   79284 third_party/libxml/xpath.c
>   73821 third_party/icu/source/i18n/ucol.cpp
>   73796 third_party/WebKit/WebCore/rendering/RenderBlock.cpp
>   68578 third_party/WebKit/WebCore/loader/FrameLoader.cpp
>   59865 third_party/libxml/HTMLparser.c
>   59048 third_party/WebKit/WebCore/svg/SVGAnimatedTemplate.h
>   58057 third_party/libxml/relaxng.c
>   57535 out/Release/obj/gen/protoc_out/chrome/browser/sync/protocol/sync.pb.cc
>   56253 v8/src/parser.cc
>   56000 third_party/icu/source/i18n/decimfmt.cpp
>   54954 global ctors
>   51952 v8/src/api.cc
>
>
> On Fri, Nov 13, 2009 at 2:39 PM, Evan Martin <e...@chromium.org> wrote:
>> We track total binary size here:
>>  http://build.chromium.org/buildbot/perf/dashboard/sizes.html
>>
>> I don't know of any place we track per-module sizes.
>>
>> On Fri, Nov 13, 2009 at 2:33 PM, Eric Seidel <esei...@chromium.org> wrote:
>>> Do we have any hard data about where our binary size goes?  It seems
>>> such data would be very useful.
>>>
>>> On Fri, Nov 13, 2009 at 2:14 PM, Evan Martin <e...@chromium.org> wrote:
>>>> I measured that SVG is nearly a sixth of the binary size of a Chrome
>>>> debug build.  That's not only more compile time, it's also more link
>>>> time for each incremental link and more time for the debugger to grind
>>>> it when starting gdb.  For my day-to-day debugging I would like to
>>>> build without SVG (and many other bits, but let's start with SVG).
>>>>
>>>> I put on one obvious patch and one patch I'm not sure about at
>>>>  https://bugs.webkit.org/show_bug.cgi?id=31490
>>>>
>>>> Does anyone have thoughts about the right way to disable SVG in the GYP 
>>>> files?
>>>> Here's the hacky second patch mentioned above:
>>>>  https://bug-31490-attachments.webkit.org/attachment.cgi?id=43196
>>>> In particular, I'm not sure of the right way to conditionally build
>>>> the SVGNames bits.
>>>>
>>>> I've seen in some cases files are completely wrapped with "#if
>>>> ENABLE(FOO)"; do you know when that is appropriate?
>>>>
>>>> --
>>>> Chromium Developers mailing list: chromium-dev@googlegroups.com
>>>> View archives, change email options, or unsubscribe:
>>>>    http://groups.google.com/group/chromium-dev
>>>>
>>>
>>
>

-- 
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