Changes between Version 11 and Version 12 of DynamicByDefault


Ignore:
Timestamp:
Nov 24, 2012 4:20:37 PM (3 years ago)
Author:
igloo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DynamicByDefault

    v11 v12  
    55
    66Full nofib results showing the effect of switching to dynamic-by-default are available for
    7 [http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-osx-x86_64.html OS X 64bit],
    8 [http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-osx-x86.html OS X 32bit],
    9 [http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-linux-x86_64.html Linux 64bit] and
    10 [http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-linux-x86.html Linux 32bit]. There is also a table of the highlights below. In summary:
     7[http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-osx-x86_64.html OS X x86_64],
     8[http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-osx-x86.html OS X x86],
     9[http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-linux-x86_64.html Linux x86_64] and
     10[http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-linux-x86.html Linux x86]. There is also a table of the highlights below. In summary:
    1111
    1212Binary sizes are way down across the board, as we are now dynamically linking to the libraries.
    1313
    14 Things are rosiest on OS X 64bit. On this platform, `-fPIC` is always on, so using dynamic libraries doesn't mean giving up a register for PIC. Overall, performance is a few percent ''better'' with dynamic by default.
     14Things are rosiest on OS X x86_64. On this platform, `-fPIC` is always on, so using dynamic libraries doesn't mean giving up a register for PIC. Overall, performance is a few percent ''better'' with dynamic by default.
    1515
    16 On OS X 32bit, the situation is not so nice. On x86 we are very short on registers, and giving up another for PIC means we end up around 15% down on performance.
     16On OS X x86, the situation is not so nice. On x86 we are very short on registers, and giving up another for PIC means we end up around 15% down on performance.
    1717
    18 On Linux 64bit we have more registers, so the effect of giving one up for PIC isn't so pronounced, but we still lose a few percent performance overall.
     18On Linux x86_64 we have more registers, so the effect of giving one up for PIC isn't so pronounced, but we still lose a few percent performance overall.
    1919
    20 For unknown reasons, 32bit Linux suffers even worse than 32bit OS X, with around a 30% performance penalty.
     20For unknown reasons, x86 Linux suffers even worse than x86 OS X, with around a 30% performance penalty.
    2121
    2222{{{
     
    2424<table border="1">
    2525<tr><td></td>
    26     <th style="font-weight: bold;">static -> dynamic<br />on OS X 64bit</th>
    27     <th style="font-weight: bold;">static -> dynamic<br />on OS X 32bit</th>
    28     <th style="font-weight: bold;">static -> dynamic<br />on Linux 64bit</th>
    29     <th style="font-weight: bold;">static -> dynamic<br />on Linux 32bit</th>
     26    <th style="font-weight: bold;">static -> dynamic<br />on OS X x86_64</th>
     27    <th style="font-weight: bold;">static -> dynamic<br />on OS X x86</th>
     28    <th style="font-weight: bold;">static -> dynamic<br />on Linux x86_64</th>
     29    <th style="font-weight: bold;">static -> dynamic<br />on Linux x86</th>
    3030</tr>
    3131
     
    7272}}}
    7373
    74 == OS X 32bit vs 64bit ==
     74== OS X x86 vs x86_64 ==
    7575
    76 Currently, some people use the 32bit version of GHC on OS X for performance reasons. It's not clear for how much longer this will be viable, as other OS X libraries start dropping 32bit support.
     76Currently, some people use the x86 version of GHC on OS X for performance reasons. It's not clear for how much longer this will be viable, as other OS X libraries start dropping x86 support.
    7777
    7878Full nofib results comparing the two are
     
    8080[http://lambda.haskell.org/~igloo/dynamic-by-default/nofib-osx-x86-x86_64-dyn.html here for dynamic by default], but the highlights are in the table below.
    8181
    82 The left-hand column shows the status quo: 64bit only beats 32bit in mutator time, and that is a shallow victory as the higher GC time means that total runtime is worse for 64bit.
     82The left-hand column shows the status quo: x86_64 only beats x86 in mutator time, and that is a shallow victory as the higher GC time means that total runtime is worse for x86_64.
    8383
    84 The right-hand column shows what the situation would be if we switch to dynamic instead. Allocations, memory use etc remain higher due to all word-sized things being twice as big. However, the speed difference moves in 64bit's favour, and 64bit is now faster overall.
     84The right-hand column shows what the situation would be if we switch to dynamic instead. Allocations, memory use etc remain higher due to all word-sized things being twice as big. However, the combination of x86_64's performance improving, and x86's performance getting worse, means that x86_64 is now faster overall.
    8585
    8686{{{