

Chrome Binary Size - mcantelon
http://neugierig.org/software/chromium/bloat/

======
mtigas
I do have to point out that this visualization represents the _binary
executable size_ of Chrome, not the source tree. (According to another
comment, it's generated with <http://github.com/martine/bloat> .)

Noticed a lot of folks linking to _directory_ treesize visualizations.

This — breaking down a compiled binary to show the size of it’s constituent
components — is a ton more interesting to me.

~~~
Lerc
...and yet it includes header files. curious.

Looking at what's there, it looks like it can compile and run C (in
nativeclient?).

~~~
caf
It's possible to define symbols in header files (for example, inline
functions).

~~~
_delirium
I thought the way the C preprocessor worked, those ended up getting literally
copy and pasted into the .c file that #include'd them, and should be
indistinguishable from the case where you wrote them directly in the .c file?
Or does gcc keep track of where #include'd files came from, and write that
info into the binary?

~~~
parbo
Yes, otherwise you'd never find syntax errors in the header files.

~~~
scott_s
But that's during the compilation phase - this is the compiled binary.
Binaries that are compiled with debugging information turned on will include
this information for a similar reason: so that when you're debugging a
program, or when it breaks, you can map that to places in your source file.

~~~
caf
Right - and `nm` uses the debugging information to identify the file:line
where each symbol was defined. The original scripts used to generate the
treemap use `nm`.

------
mrdoob2
Generated with this: <http://github.com/martine/bloat>

via [http://groups.google.com/a/chromium.org/group/chromium-
dev/b...](http://groups.google.com/a/chromium.org/group/chromium-
dev/browse_thread/thread/aaefd56a3adc44c5)

~~~
avar
I patched it to support generation on 64 bit systems:
<http://github.com/martine/bloat/issues#issue/1>

------
ZeroGravitas
What does Chrome use Speex (a low-bitrate voice codec) for?

edit: answering my own question, a speech-to-text in HTML proposal from Google

<https://docs.google.com/View?id=dcfg79pz_5dhnp23f5>

[http://lists.whatwg.org/pipermail/whatwg-
whatwg.org/2010-May...](http://lists.whatwg.org/pipermail/whatwg-
whatwg.org/2010-May/026338.html)

<http://www.jeremyselier.com/entry/speech-attribute-demo>

~~~
senko
Chrome also incorporates libjingle, Google's library for ICE-like RTP
handling, used in Google Talk / Google Video, which also uses Speex for voice
part.

------
scott_s
This is an amazing visualization, but I don't like using the term "bloat."
What would you take away? Keep in mind that Chrome's architecture is
purposefully approaching that of an operating system.

~~~
billiob
It's useless to have N versions of the same library on your system. I prefer
that my favorite distro takes care of updating one particular library if there
is a security bug than having to wait for google to take care about it. It's
what is done in gentoo: [http://phajdan-jr.blogspot.com/2010/08/www-
clientchromium-no...](http://phajdan-jr.blogspot.com/2010/08/www-
clientchromium-now-uses-system.html) Currently, it uses the system libraries
for:

• bzip2,

• codesighs,

• cros,

• icu,

• jemalloc,

• lcov,

• libevent,

• libjpeg,

• libpng,

• libxml,

• libxslt,

• lzma_sdk,

• molokocacao,

• ocmock,

• pyftpdlib,

• simplejson,

• tlslite.

As TODO, there is still zlib due to an issue during compilation.

It would also be great to have V8 as a different project so that it could be
used outside of chrome with much less pain.

~~~
bnoordhuis
> It would also be great to have V8 as a different project so that it could be
> used outside of chrome with much less pain.

<http://code.google.com/p/v8/source/browse/trunk/> ?

------
thehodge
This is a pretty awesome way to visualise filesizes of various things... never
seen it before..

~~~
stilist
<http://grandperspectiv.sourceforge.net/>

~~~
mcantelon
...And for the Windows community: <http://www.sixty-five.cc/sm/>

Is there a Linux equivalent?

~~~
sparky
I use KDirStat <http://kdirstat.sourceforge.net/>

~~~
slug
Someone is working on a kde4 port, see comments at <http://kde-
apps.org/content/show.php/KDirStat?content=10159>

Gnome also comes with something similar.

------
eitally
Sequoiaview and Treesize are two good, free Windows options. Treesize, in
particular, has a prettier output and a ton more features. We install it on
all our Windows servers because it makes disk cleanups so much easier.

Here's the free version: <http://www.jam-software.com/treesize_personal/>

------
davidst
Imagine a tool that would take the output of a profiler and render an
interactive graphic like this for both: (A) data structure sizes and (B) run-
time performance. That would be incredibly useful.

~~~
cma
kcachegrind

<http://www.google.com/images?q=kcachegrind>

~~~
davidst
Cool, thanks! Too bad there's not a Windows version, though.

~~~
noibl
Or is there.. <http://sourceforge.net/projects/wincachegrind/>

~~~
gjm11
Seems to be PHP-specific: it processes the output from something called
"xdebug 2", which is a PHP extension that dumps detailed information about
what your code is doing.

Not quite the same target audience as kcachegrind...

