
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/ae1b6dcd32fd2c8578ef3eee4c6f8... 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@joachim-breitner.de • https://www.joachim-breitner.de/ XMPP: nomeata@joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F Debian Developer: nomeata@debian.org