diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2017-02-11 19:20:24 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-02-11 19:20:25 -0500 |
commit | a1980ecb5626ec85fc14fbd217e2d16c7d50a120 (patch) | |
tree | 7e8ea9f811d966f5e445ab5adb603915f27537cf /testsuite | |
parent | 17b1e0bae7c0d7b4d3f8e1847e919c0e882e55c6 (diff) | |
download | haskell-a1980ecb5626ec85fc14fbd217e2d16c7d50a120.tar.gz |
Improve the Occurrence Analyzer’s handling of one-shot functions
When determining whether an expression is used saturatedly, count the
number of value arguments that the occurrence analyser sees, and add
the number of one-shot arguments that we know (from the strictness
analyser) are passed from the context.
perf results suggest no noticable change in allocations, reduction of
code sizes, and performance regression possibliy due to loss of join
points.
Test Plan: perf.haskell.org
Reviewers: simonpj, austin, bgamari
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D3089
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/tests/perf/haddock/all.T | 93 |
1 files changed, 48 insertions, 45 deletions
diff --git a/testsuite/tests/perf/haddock/all.T b/testsuite/tests/perf/haddock/all.T index f037954263..c9b84cf458 100644 --- a/testsuite/tests/perf/haddock/all.T +++ b/testsuite/tests/perf/haddock/all.T @@ -5,32 +5,33 @@ test('haddock.base', [unless(in_tree_compiler(), skip), req_haddock ,stats_num_field('bytes allocated', - [(wordsize(64), 31115778088 , 5) - # 2012-08-14: 5920822352 (amd64/Linux) - # 2012-09-20: 5829972376 (amd64/Linux) - # 2012-10-08: 5902601224 (amd64/Linux) - # 2013-01-17: 6064874536 (x86_64/Linux) - # 2013-02-10: 6282746976 (x86_64/Linux) - # 2013-09-17: 6634886456 (x86_64/Linux) - # 2013-09-18: 6294339840 (x86_64/Linux) - # 2013-11-21: 6756213256 (x86_64/Linux) - # 2014-01-12: 7128342344 (x86_64/Linux) - # 2014-06-12: 7498123680 (x86_64/Linux) - # 2014-08-05: 7992757384 (x86_64/Linux - bugfix for #314, Haddock now parses more URLs) - # 2014-08-08: 7946284944 (x86_64/Linux - Haddock updates to attoparsec-0.12.1.0) - # 2014-09-09: 8354439016 (x86_64/Linux - Applicative/Monad changes, according to Austin) - # 2014-09-10: 7901230808 (x86_64/Linux - Applicative/Monad changes, according to Joachim) - # 2014-10-07: 8322584616 (x86_64/Linux) - # 2014-12-14: 9502647104 (x86_64/Linux) - Update to Haddock 2.16 - # 2014-01-08: 9014511528 (x86_64/Linux) - Eliminate so-called "silent superclass parameters" (and others) - # 2015-07-22: 9418857192 (x86_64/Linux) - Just slowly creeping up. - # 2015-10-03: 9894189856 (x86_64/Linux) - Still creeping + [(wordsize(64), 34819979936 , 5) + # 2012-08-14: 5920822352 (amd64/Linux) + # 2012-09-20: 5829972376 (amd64/Linux) + # 2012-10-08: 5902601224 (amd64/Linux) + # 2013-01-17: 6064874536 (x86_64/Linux) + # 2013-02-10: 6282746976 (x86_64/Linux) + # 2013-09-17: 6634886456 (x86_64/Linux) + # 2013-09-18: 6294339840 (x86_64/Linux) + # 2013-11-21: 6756213256 (x86_64/Linux) + # 2014-01-12: 7128342344 (x86_64/Linux) + # 2014-06-12: 7498123680 (x86_64/Linux) + # 2014-08-05: 7992757384 (x86_64/Linux - bugfix for #314, Haddock now parses more URLs) + # 2014-08-08: 7946284944 (x86_64/Linux - Haddock updates to attoparsec-0.12.1.0) + # 2014-09-09: 8354439016 (x86_64/Linux - Applicative/Monad changes, according to Austin) + # 2014-09-10: 7901230808 (x86_64/Linux - Applicative/Monad changes, according to Joachim) + # 2014-10-07: 8322584616 (x86_64/Linux) + # 2014-12-14: 9502647104 (x86_64/Linux) - Update to Haddock 2.16 + # 2014-01-08: 9014511528 (x86_64/Linux) - Eliminate so-called "silent superclass parameters" (and others) + # 2015-07-22: 9418857192 (x86_64/Linux) - Just slowly creeping up. + # 2015-10-03: 9894189856 (x86_64/Linux) - Still creeping # 2015-12-11: 11119767632 (amd64/Linux) - TypeInType (see #11196) # 2015-12-17: 26282821104 (x86_64/Linux) - Update Haddock to master # 2015-12-17: 27812188000 (x86_64/Linux) - Move Data.Functor.* into base # 2016-02-25: 30987348040 (x86_64/Linux) - RuntimeRep # 2016-05-12: 32855223200 (x86_64/Linux) - Make Generic1 poly-kinded # 2017-01-11: 31115778088 (x86_64/Linux) - Join points (#12988) + # 2017-02-11: 34819979936 (x86_64/Linux) - OccurAnal / One-Shot (#13227) ,(platform('i386-unknown-mingw32'), 4434804940, 5) # 2013-02-10: 3358693084 (x86/Windows) @@ -53,29 +54,29 @@ test('haddock.base', test('haddock.Cabal', [unless(in_tree_compiler(), skip), req_haddock ,stats_num_field('bytes allocated', - [(wordsize(64), 23272708864, 5) - # 2012-08-14: 3255435248 (amd64/Linux) - # 2012-08-29: 3324606664 (amd64/Linux, new codegen) - # 2012-10-08: 3373401360 (amd64/Linux) - # 2013-03-13: 3626604824 (amd64/Linux) Cabal updated - # 2013-03-28: 3517301864 (amd64/Linux) fixed #7796 - # 2013-04-26: 3658801800 (amd64/Linux) Cabal updated - # 2013-08-26: 3808466816 (amd64/Linux) Cabal updated - # 2013-11-21: 3908586784 (amd64/Linux) Cabal updated - # 2013-12-12: 3828567272 (amd64/Linux) - # 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) - # 2014-09-09: 4660249216 (x86_64/Linux - Applicative/Monad changes according to Austin) - # 2014-09-10: 4500376192 (x86_64/Linux - Applicative/Monad changes according to Joachim) - # 2014-09-24: 5840893376 (x86_64/Linux - Cabal update) - # 2014-10-04: 6019839624 (x86_64/Linux - Burning Bridges, Cabal update) - # 2014-12-14: 6387320816 (x86_64/Linux) - Update to Haddock 2.16 - # 2015-01-22: 6710234312 (x86_64/Linux) - Cabal updated - # 2015-06-29: 7413958344 (x86_64/Linux) - due to #10482, not yet investigated - # 2015-12-11: 8114833312 (amd64/Linux) - TypeInType (See #11196) - # 2015-12-17: 9982130512 (amd64/Linux) - Update Haddock to master + [(wordsize(64), 25533642168, 5) + # 2012-08-14: 3255435248 (amd64/Linux) + # 2012-08-29: 3324606664 (amd64/Linux, new codegen) + # 2012-10-08: 3373401360 (amd64/Linux) + # 2013-03-13: 3626604824 (amd64/Linux) Cabal updated + # 2013-03-28: 3517301864 (amd64/Linux) fixed #7796 + # 2013-04-26: 3658801800 (amd64/Linux) Cabal updated + # 2013-08-26: 3808466816 (amd64/Linux) Cabal updated + # 2013-11-21: 3908586784 (amd64/Linux) Cabal updated + # 2013-12-12: 3828567272 (amd64/Linux) + # 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) + # 2014-09-09: 4660249216 (x86_64/Linux - Applicative/Monad changes according to Austin) + # 2014-09-10: 4500376192 (x86_64/Linux - Applicative/Monad changes according to Joachim) + # 2014-09-24: 5840893376 (x86_64/Linux - Cabal update) + # 2014-10-04: 6019839624 (x86_64/Linux - Burning Bridges, Cabal update) + # 2014-12-14: 6387320816 (x86_64/Linux) - Update to Haddock 2.16 + # 2015-01-22: 6710234312 (x86_64/Linux) - Cabal updated + # 2015-06-29: 7413958344 (x86_64/Linux) - due to #10482, not yet investigated + # 2015-12-11: 8114833312 (amd64/Linux) - TypeInType (See #11196) + # 2015-12-17: 9982130512 (amd64/Linux) - Update Haddock to master # 2015-12-22: 10519532424 (amd64/Linux) - Lots of new Semigroup instances in Cabal # 2016-03-29: 11517963232 (amd64/Linux) - not yet investigated # 2016-03-30: 10941742184 (amd64/Linux) - defer inlining of Int* Ord methods @@ -94,6 +95,7 @@ test('haddock.Cabal', # 2016-10-06: 23706190072 (amd64/Linux) - Cabal update # 2016-12-20: 25478853176 (amd64/Linux) - Cabal update # 2017-01-14: 23272708864 (amd64/Linux) - Join points (#12988) + # 2017-02-11: 25533642168 (amd64/Linux) - OccurAnal / One-Shot (#13227) ,(platform('i386-unknown-mingw32'), 3293415576, 5) # 2012-10-30: 1733638168 (x86/Windows) @@ -115,8 +117,8 @@ test('haddock.Cabal', test('haddock.compiler', [unless(in_tree_compiler(), skip), req_haddock ,stats_num_field('bytes allocated', - [(wordsize(64), 60911147344, 10) - # 2012P-08-14: 26070600504 (amd64/Linux) + [(wordsize(64), 62070477608, 10) + # 2012-08-14: 26070600504 (amd64/Linux) # 2012-08-29: 26353100288 (amd64/Linux, new CG) # 2012-09-18: 26882813032 (amd64/Linux) # 2012-11-12: 25990254632 (amd64/Linux) @@ -131,6 +133,7 @@ test('haddock.compiler', # 2015-12-17: 58017214568 (amd64/Linux) update Haddock to master # 2016-06-21: 55314944264 (amd64/Linux) D2350: Make checkFamInstConsistency less expensive # 2016-11-29: 60911147344 (amd64/Linux) unknown cause + # 2017-02-11: 62070477608 (amd64/Linux) OccurAnal / One-Shot (#13227) (and others) ,(platform('i386-unknown-mingw32'), 902576468, 10) # 2012-10-30: 13773051312 (x86/Windows) |