Performance improvement of the compiler itself
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 29 Aug 2014 16:16:36 +0000 (17:16 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Fri, 29 Aug 2014 16:16:55 +0000 (17:16 +0100)
This is a result of one of these, or a combination
  002b7a2b * Give the worker for an INLINABLE function a suitably-phased Activation
  ca666b8b * When finding loop breakers, distinguish INLINE from INLINEABLE
  a98c9c5e * Fix a bug in CSE, for INLINE/INLNEABLE things

Some changes are quite big: for bytes_allocated we have
  T6048: 13% below expected
  T5837: 15% below expected
  T3064:  5% below expected

Of course, these might have already been close to their lower
threshold, so perhaps not all the improvement is from here.
But it is good news all the same.

testsuite/tests/perf/compiler/all.T
testsuite/tests/perf/haddock/all.T

index 1cf4287..cc635ff 100644 (file)
@@ -235,7 +235,7 @@ test('T3064',
             # 2012-10-30: 111189536 (x86/Windows)
             # 2013-11-13: 146626504 (x86/Windows, 64bit machine)
             # 2014-01-22: 162457940 (x86/Linux)
-           (wordsize(64), 332702112, 5)]),
+           (wordsize(64), 313638592, 5)]),
             # (amd64/Linux) (28/06/2011):  73259544
             # (amd64/Linux) (07/02/2013): 224798696
             # (amd64/Linux) (02/08/2013): 236404384, increase from roles
@@ -245,6 +245,7 @@ test('T3064',
             # (amd64/Linux) (11/02/2014): 308422280, optimize Coercions in simpleOptExpr
             # (amd64/Linux) (23/05/2014): 324022680, unknown cause
             # (amd64/Linux) (2014-07-17): 332702112, general round of updates
+            # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things
 
       compiler_stats_num_field('max_bytes_used',
           [(wordsize(32), 11202304, 20),
@@ -413,13 +414,14 @@ test('T5837',
           [(wordsize(32), 45520936 , 10),
              # 40000000 (x86/Linux)
              # 2013-11-13: 45520936 (x86/Windows, 64bit machine)
-           (wordsize(64), 86795752, 10)])
+           (wordsize(64), 73639840, 10)])
              # sample: 3926235424 (amd64/Linux, 15/2/2012)
              # 2012-10-02 81879216
              # 2012-09-20 87254264 amd64/Linux
              # 2013-09-18 90587232 amd64/Linux
              # 2013-11-21 86795752 amd64/Linux, GND via Coercible and counters
              #                                  for constraints solving
+             # 2041-08-29 73639840 amd64/Linux, w/w for INLINABLE things
       ],
       compile_fail,['-ftype-function-depth=50'])
 
@@ -430,13 +432,14 @@ test('T6048',
             # prev:       38000000 (x86/Linux)
             # 2012-10-08: 48887164 (x86/Linux)
             # 2014-04-04: 62618072 (x86 Windows, 64 bit machine)
-           (wordsize(64), 125431448, 12)])
+           (wordsize(64), 108354472, 12)])
              # 18/09/2012  97247032 amd64/Linux
              # 16/01/2014 108578664 amd64/Linux (unknown, likely foldl-via-foldr)
              # 18/01/2014  95960720 amd64/Linux Call Arity improvements
              # 28/02/2014 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change)
              # 05/03/2014 110646312 amd64/Linux Call Arity became more elaborate
              # 14/07/2014 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg*
+             # 29/08/2014 108354472 amd64/Linux w/w for INLINABLE things
       ],
       compile,[''])
 
index 1ef4fbc..80a55d1 100644 (file)
@@ -17,7 +17,7 @@ test('haddock.base',
             # 2014-01-22: 168 (x86/Linux - new haddock)
             # 2014-06-29: 156 (x86/Linux)
      ,stats_num_field('max_bytes_used',
-          [(wordsize(64), 127954488, 10)
+          [(wordsize(64), 112286208, 10)
             # 2012-08-14:  87374568 (amd64/Linux)
             # 2012-08-21:  86428216 (amd64/Linux)
             # 2012-09-20:  84794136 (amd64/Linux)
@@ -25,6 +25,7 @@ test('haddock.base',
             # 2013-01-29:  96022312 (amd64/Linux)
             # 2013-10-18: 115113864 (amd64/Linux)
            # 2014-07-31: 127954488 (amd64/Linux), correlates with 1ae5fa45
+            # 2014-08-29: 112286208 (amd64/Linux), w/w for INLINABLE things
           ,(platform('i386-unknown-mingw32'), 58557136, 10)
             # 2013-02-10:                     47988488 (x86/Windows)
             # 2013-11-13:                     58557136 (x86/Windows, 64bit machine)
@@ -103,7 +104,7 @@ test('haddock.Cabal',
             # 2014-01-22: 52718512 (x86/Linux)
             # 2014-06-29: 66411508 (x86/Linux)
      ,stats_num_field('bytes allocated',
-          [(wordsize(64), 4493770224, 5)
+          [(wordsize(64), 4267311856, 5)
             # 2012-08-14: 3255435248 (amd64/Linux)
             # 2012-08-29: 3324606664 (amd64/Linux, new codegen)
             # 2012-10-08: 3373401360 (amd64/Linux)
@@ -116,12 +117,15 @@ test('haddock.Cabal',
             # 2014-01-12: 3979151552 (amd64/Linux) new parser
             # 2014-06-29: 4200993768 (amd64/Linux)
             # 2014-08-05: 4493770224 (x86_64/Linux - bugfix for #314, Haddock now parses more URLs)
+            # 2014-08-29: 4267311856 (x86_64/Linux - w/w for INLINABLE things)
+
           ,(platform('i386-unknown-mingw32'), 2052220292, 5)
             # 2012-10-30:                     1733638168 (x86/Windows)
             # 2013-02-10:                     1906532680 (x86/Windows)
             # 2014-01-28:                     1966911336 (x86/Windows)
             # 2014-04-24:                     2052220292 (x86/Windows)
             # 2014-08-05: XXX TODO UPDATE ME XXX
+
           ,(wordsize(32), 2127198484, 1)])
             # 2012-08-14: 1648610180 (x86/OSX)
             # 2014-01-22: 1986290624 (x86/Linux)