[Liverpool] Iceweasel
Simon Johnson
simon.johnson at gmail.com
Mon Sep 7 15:18:36 UTC 2009
I found this at the weekend, it's quite interesting:
http://tech.slashdot.org/comments.pl?sid=1277771&cid=28433901
To quote:
Mozilla does comparative performance testing for the best GCC compiler
flags constantly. There are several reasons why our Linux builds are slower
than Windows:
1. The Windows ABI is cheaper: every relocated symbol in Linux is
resolved at runtime by loading the PIC register and going a GOT lookup.
Windows avoids PIC code by loading the code at a "known" address and
relocating it at startup only if it conflicts with another DLL.
2. Mozilla code runs fastest when 99% of it is compiled for space
savings, not "speed". Because of the sheer amount of code involved in a web
browser, most of the code will be "cold". Tests have shown that at least on
x86, processor caches perform much better if we compile 99% of our code
optimizing for codesize and not raw execution time: this is very different
than most compiler benchmarks. The MSVC profile-guided optimization system
allows us to optimize that important 1% at very high optimization levels;
the GCC profile-guided optimization system only really works within the
confines of a particular optimization level such as -Os or -O3. In many
cases using PGO with Linux produced much *worse* code!
3. The GCC register allocator sucks, at least on register-starved x86:
we've examined many cases where GCC does loads and saves that are entirely
unnecessary, thus causing slowdowns.
Believe me, we'd really love to make Linux perform as well as Windows! We
spent a lot of time in Firefox 3 with libxul reducing startup time by making
symbols hidden and reducing the number of runtime relocations...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.lug.org.uk/pipermail/liverpool/attachments/20090907/43425eb7/attachment.htm
More information about the Liverpool
mailing list