Early inline

Joachim Breitner mail at joachim-breitner.de
Sun Feb 19 05:51:01 UTC 2017


Hi,

perf.haskell.org has built all but the last patch in this sequence, so
I can now see what it has to say about where the performance changes
came from:

Am Freitag, den 17.02.2017, 16:41 +0000 schrieb Simon Peyton Jones via
ghc-devs:
> So I  have ended up a with a whole series of patches, which are on
> wip/spj-early-inline branch
> 7f14d15c0e5fc2c9a81db3d0f0b01d85857b1d87 Error message wibbles accumulated from the preceding patches

Not built yet, but probably not interesting.

> 0499c65d9fa45e7879e1e1264fdaa15274adcba6 Improve SetLevels for join points
nofib/time/hidden 	0.376 	+ 5.59% 	0.397 	s
econds

> 3b2fc0827ff6cafa34836c2d9dc710b628c990b6 Change -ddump-tc-trace output in TcErrors, slightly
no change

> 9ffdf62b0ca72c4f35579f9d6f31a9beebf23025 Improve pretty-printing of types
no change

> 3f346eac06399a79adf48425018ee949cee245bf Add VarSet.anyDVarSet, allDVarSet
no change

> 912e71eb3b4ec91e805ecf2236d1033e55e2933a The Early Inline Patch


> 7188cd13f8e54efa764d52ca016b87b3669b29f5 Small changes to expression sizing in CoreUnfold
> bfc6fa3f377d11bdfcdbf82b65bf2f39cb00b90c Fix SetLevels for makeStaticPtr
> 8b1cfea089faacb5b95ffcc3511e05faeabb8076 Extend CSE to handle recursive bindings
> 50411995641802568bb27c867afe804f91e0524c Combine identical case alterantives in CSE
> 2e077ccc736a0b2a622b7f42b7929966bddb4ded Inline data constructor wrappers in phase 2 only
> b868de53dd19f639c1070089ecff21948ff33e0d Make Specialise work with casts
> c767ae5f04a09ef71dcb8f67a17225a52c2cc5d2 Stop uniques ending up in SPEC rule names
> b49ed1f0102f93ca7f62632c436b41bd240b501f Occurrence-analyse the result of rule firings
> 607a735dfb99bb8f0edf466ccb01e732218c42ec Add -fspec-constr-keen
> 67a0c1872c0515f1f12ea68097a84e02da92f45b Refactor floating of bindings (fiBind)
These patches cannot be distinguished because all but the last one
failed to build:

    compiler/simplCore/SimplCore.hs:435:48: error:
                • Couldn't match type ‘CoreM ModGuts’
                                 with ‘CoreProgram -> CoreProgram’
                  Expected type: DynFlags -> CoreProgram -> CoreProgram
                    Actual type: ModGuts -> CoreM ModGuts
                • In the first argument of ‘doPassD’, namely ‘floatInwards’
                  In the expression: doPassD floatInwards
                  In the expression:
                    {-# SCC "FloatInwards" #-} (doPassD floatInwards)
    https://github.com/nomeata/ghc-speed-logs/blob/ae1b6dcd32fd2c8578ef3eee4c6f8926d845cb97/bfc6fa3f377d11bdfcdbf82b65bf2f39cb00b90c.log.broken

The overall effect of this patch was (as you already know):

nofib/time/binary-trees 	0.751 	- 4.79% 	0.715 	
seconds
nofib/time/fannkuch-redux 	4.751 	- 3.85% 	4.568 	
seconds
nofib/time/integer       	1.276 	+ 19.04% 	1.519 	
seconds

all sizes increase by 3 or 4%.

tests/alloc/T10547 	32406096 	- 4.48% 	30953160 	bytes
tests/alloc/T10858 	259699544 	- 4.94% 	246866000 	bytes
tests/alloc/T12227 	1654153320 	- 35.87% 	1060777528 	bytes
tests/alloc/T12234 	75197448 	- 7.02% 	69918192 	bytes
tests/alloc/T12707 	1309049328 	- 5.06% 	1242803272 	bytes
tests/alloc/T13035 	90082344 	- 4.04% 	86438544 	bytes
tests/alloc/T13056 	512447048 	- 20.21% 	408873760 	bytes
tests/alloc/T1969 	756392264 	- 19% 		612713624 	bytes
tests/alloc/T3064 	287429088 	- 8.9% 		261860968 	bytes
tests/alloc/T3294 	2715661784 	- 3.51% 	2620404344 	bytes
tests/alloc/T4801 	412672008 	- 5.77% 	388841920 	bytes
tests/alloc/T5321FD 	470413728 	- 3.67% 	453148744 	bytes
tests/alloc/T5321Fun 	500839840 	- 3.11% 	485276616 	bytes
tests/alloc/T5642 	836251056 	- 5.19% 	792875648 	bytes
tests/alloc/T5837 	51684016 	- 3.97% 	49631216 	bytes
tests/alloc/T6048 	98489944 	+ 3.4% 		101835168 	bytes
tests/alloc/T783 	462334328 	- 5.21% 	438237272 	bytes
tests/alloc/T9020 	775878448 	- 35.27% 	502248184 	bytes
tests/alloc/T9872a 	3136944168 	- 6.81% 	2923428352 	bytes
tests/alloc/T9872b 	3964092608 	- 5.85% 	3732226832 	bytes
tests/alloc/T9872c 	3603773864 	- 5.49% 	3405843000 	bytes
tests/alloc/T9872d 	466420232 	- 5.1% 		442644168 	bytes
tests/alloc/T9961 	575612760 	- 13.15% 	499917080 	bytes
tests/alloc/lazy-bs-all	436680 		- 3.77% 	420224 	bytes
tests/alloc/parsing001 	499038992 	- 6.77% 	465237088 	bytes
tests/alloc/T10547 	32406096 	- 4.48% 	30953160 	bytes
tests/alloc/T10858 	259699544 	- 4.94% 	246866000 	bytes
tests/alloc/T12227 	1654153320 	- 35.87% 	1060777528 	bytes
tests/alloc/T12234 	75197448 	- 7.02% 	69918192 	bytes
tests/alloc/T12707 	1309049328 	- 5.06% 	1242803272 	bytes
tests/alloc/T13035 	90082344 	- 4.04% 	86438544 	bytes
tests/alloc/T13056 	512447048 	- 20.21% 	408873760 	bytes
tests/alloc/T1969 	756392264 	- 19% 		612713624 	bytes
tests/alloc/T3064 	287429088 	- 8.9% 		261860968 	bytes
tests/alloc/T3294 	2715661784 	- 3.51% 	2620404344 	bytes
tests/alloc/T4801 	412672008 	- 5.77% 	388841920 	bytes
tests/alloc/T5321FD 	470413728 	- 3.67% 	453148744 	bytes
tests/alloc/T5321Fun 	500839840 	- 3.11% 	485276616 	bytes
tests/alloc/T5642 	836251056 	- 5.19% 	792875648 	bytes
tests/alloc/T5837 	51684016 	- 3.97% 	49631216 	bytes
tests/alloc/T6048 	98489944 	+ 3.4% 		101835168 	bytes
tests/alloc/T783 	462334328 	- 5.21% 	438237272 	bytes
tests/alloc/T9020 	775878448 	- 35.27% 	502248184 	bytes
tests/alloc/T9872a 	3136944168 	- 6.81% 	2923428352 	bytes
tests/alloc/T9872b 	3964092608 	- 5.85% 	3732226832 	bytes
tests/alloc/T9872c 	3603773864 	- 5.49% 	3405843000 	bytes
tests/alloc/T9872d 	466420232 	- 5.1% 		442644168 	bytes
tests/alloc/T9961 	575612760 	- 13.15% 	499917080 	bytes
tests/alloc/lazy-bs-all	436680	 	- 3.77% 	420224 	bytes
tests/alloc/parsing001 	499038992 	- 6.77% 	465237088 	bytes


> e90f4d7c6d3003039fa1647a3da3dafcaa75527b More tracing in SpecConstr
no changes.

Well, less helpful than expected, but hard to do better given a patch
series where not every patch builds.

Greetings,
Joachim
-- 
Joachim “nomeata” Breitner
  mail at joachim-breitner.dehttps://www.joachim-breitner.de/
  XMPP: nomeata at joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
  Debian Developer: nomeata at debian.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20170219/3dcc8b0e/attachment.sig>


More information about the ghc-devs mailing list