diff options
Diffstat (limited to 'testsuite/tests')
-rw-r--r-- | testsuite/tests/callarity/perf/all.T | 12 | ||||
-rw-r--r-- | testsuite/tests/deriving/perf/all.T | 11 | ||||
-rw-r--r-- | testsuite/tests/perf/compiler/all.T | 1051 | ||||
-rw-r--r-- | testsuite/tests/perf/haddock/all.T | 183 | ||||
-rw-r--r-- | testsuite/tests/perf/join_points/all.T | 16 | ||||
-rw-r--r-- | testsuite/tests/perf/should_run/all.T | 362 | ||||
-rw-r--r-- | testsuite/tests/perf/space_leaks/all.T | 75 | ||||
-rw-r--r-- | testsuite/tests/pmcheck/should_compile/all.T | 27 | ||||
-rw-r--r-- | testsuite/tests/primops/should_run/all.T | 6 | ||||
-rw-r--r-- | testsuite/tests/simplCore/should_compile/all.T | 3 | ||||
-rw-r--r-- | testsuite/tests/simplStg/should_run/all.T | 5 |
11 files changed, 151 insertions, 1600 deletions
diff --git a/testsuite/tests/callarity/perf/all.T b/testsuite/tests/callarity/perf/all.T index 83083d4b4d..37e40e6f9c 100644 --- a/testsuite/tests/callarity/perf/all.T +++ b/testsuite/tests/callarity/perf/all.T @@ -1,13 +1,7 @@ test('T3924', - [stats_num_field('bytes allocated', - [ (wordsize(64), 50760, 8), - # previously, without call-arity: 22326544 - # 2014-01-18: 51480 (amd64/Linux) - # 2014-07-17: 50760 (amd64/Linux) (Roundabout adjustment) - # 2015-04-03: Widen 5->8% (amd64/Windows was doing better) - (wordsize(32), 44988, 5) ]), - # 2014-04-04: 44988 (Windows, 64-bit machine) - only_ways(['normal']) + [collect_stats('bytes allocated',8) + , only_ways(['normal']) ], compile_and_run, ['-O']) + diff --git a/testsuite/tests/deriving/perf/all.T b/testsuite/tests/deriving/perf/all.T index 240571b4a2..1402a38b5d 100644 --- a/testsuite/tests/deriving/perf/all.T +++ b/testsuite/tests/deriving/perf/all.T @@ -1,13 +1,6 @@ test('T10858', - [compiler_stats_num_field('bytes allocated', - [(wordsize(64), 221895064, 8) ]), - # Initial: 222312440 - # 2016-12-19 247768192 Join points (#19288) - # 2017-02-12 304094944 Type-indexed Typeable - # 2017-02-25 275357824 Early inline patch - # 2017-03-28 241242968 Run Core Lint less - # 2017-06-07 221895064 Apparently been reducing for some time - # Today it crossed the boundary; good + [ collect_compiler_stats('bytes allocated',8), only_ways(['normal'])], compile, ['-O']) + diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T index 3e724ec63f..d87155b723 100644 --- a/testsuite/tests/perf/compiler/all.T +++ b/testsuite/tests/perf/compiler/all.T @@ -1,4 +1,4 @@ -# Tests that call 'compiler_stats_num_field' are skipped when debugging is on. +# Tests that call 'collect_compiler_stats' are skipped when debugging is on. # See testsuite/driver/testlib.py. def no_lint(name, opts): @@ -29,112 +29,8 @@ setTestOpts(no_lint) test('T1969', [# expect_broken(12437), - compiler_stats_num_field('peak_megabytes_allocated', # Note [residency] - [(wordsize(32), 30, 15), - # 2010-05-17 14 (x86/Windows) - # 15 (x86/OS X) - # 19 (x86/OS X) - # 2013-02-10 13 (x86/Windows) - # 2013-02-10 14 (x86/OSX) - # 2013-11-13 17 (x86/Windows, 64bit machine) - # 2015-07-11 21 (x86/Linux, 64bit machine) use +RTS -G1 - # 2016-04-06 30 (x86/Linux, 64bit machine) - (wordsize(64), 73, 20)]), - # 28 (amd64/Linux) - # 34 (amd64/Linux) - # 2012-09-20 23 (amd64/Linux) - # 2012-10-03 25 (amd64/Linux if .hi exists) - # 2013-02-13 23, but unstable so increased to 10% range - # 2013-02-13 27, very unstable! - # 2014-09-10 29 (amd64/Linux) post-AMP-cleanup - # 2013-09-11 30, 10 (amd64/Linux) - # 2013-09-11 30, 15 (adapt to Phab CI) - # 2015-06-03 41, (amd64/Linux) use +RTS -G1 - # 2015-10-28 55, (amd64/Linux) emit Typeable at definition site - # 2016-10-20 68, (amd64/Linux) allow top-level string literals - # See the comment 16 on #8472. - # 2017-02-17 83 (amd64/Linux) Type-indexed Typeable - # 2017-03-31 61 (amd64/Linux) Fix memory leak in simplifier - # 2018-01-25 78 (amd64/Linux) Use CoreExpr for EvTerm - # 2018-07-10 73 (amd64/Linux) Fix space leaks - compiler_stats_num_field('max_bytes_used', - [(platform('i386-unknown-mingw32'), 5719436, 20), - # 2010-05-17 5717704 (x86/Windows) - # 2013-02-10 5159748 (x86/Windows) - # 2013-02-10 5030080 (x86/Windows) - # 2013-11-13 7295012 (x86/Windows, 64bit machine) - # 2014-04-24 5719436 (x86/Windows, 64bit machine) - (wordsize(32), 9418680, 1), - # 6707308 (x86/OS X) - # 2009-12-31 6149572 (x86/Linux) - # 2014-01-22 6429864 (x86/Linux) - # 2014-06-29 5949188 (x86/Linux) - # 2015-07-11 6241108 (x86/Linux, 64-bit machine) use +RTS -G1 - # 2016-04-06 9093608 (x86/Linux, 64-bit machine) - # 2017-03-24 9261052 (x86/Linux, 64-bit machine) - # 2017-04-06 9418680 (x86/Linux, 64-bit machine) - - (wordsize(64), 19738608, 15)]), - # 2014-09-10 10463640, 10 # post-AMP-update (somewhat stabelish) - # looks like the peak is around ~10M, but we're - # unlikely to GC exactly on the peak. - # varies quite a lot with CLEANUP and BINDIST, - # hence 10% range. - # See Note [residency] to get an accurate view. - # 2014-09-14 9684256, 10 # try to lower it a bit more to match Phab's CI - # 2014-11-03 10584344, # ghcspeed reports higher numbers consistently - # 2015-07-11 11670120 (amd64/Linux) - # 2015-10-28 15017528 (amd64/Linux) emit typeable at definition site - # 2016-10-12 17285216 (amd64/Linux) it's not entirely clear why - # 2017-02-01 19924328 (amd64/Linux) Join points (#12988) - # 2017-02-14 16393848 Early inline patch - # 2017-03-31 16679176 Fix memory leak in simplifier - # 2017-08-25 19199872 Refactor the Mighty Simplifier - # 2018-02-19 22311600 (amd64/Linux) Unknown - # 2018-07-10 19738608 (amd64/Linux) Fix space leaks - - compiler_stats_num_field('bytes allocated', - [(platform('i386-unknown-mingw32'), 301784492, 5), - # 215582916 (x86/Windows) - # 2012-10-29 298921816 (x86/Windows) - # 2013-02-10 310633884 (x86/Windows) - # 2013-11-13 317975916 (x86/Windows, 64bit machine) - # 2014-04-04 301784492 (x86/Windows, 64bit machine) - (wordsize(32), 324586096, 1), - # 221667908 (x86/OS X) - # 274932264 (x86/Linux) - # 2012-10-08 303930948 (x86/Linux, new codegen) - # 2013-02-10 322937684 (x86/OSX) - # 2014-01-22 316103268 (x86/Linux) - # 2014-06-29 303300692 (x86/Linux) - # 2015-07-11 288699104 (x86/Linux, 64-bit machine) use +RTS -G1 - # 2016-04-06 344730660 (x86/Linux, 64-bit machine) - # 2017-03-24 324586096 (x86/Linux, 64-bit machine) - (wordsize(64), 670839456, 5)]), - # 2009-11-17 434845560 (amd64/Linux) - # 2009-12-08 459776680 (amd64/Linux) - # 2010-05-17 519377728 (amd64/Linux) - # 2011-08-05 561382568 (amd64/OS X) - # 2012-07-16 589168872 (amd64/Linux) - # 2012-07-20 595936240 (amd64/Linux) - # 2012-08-23 606230880 (amd64/Linux) - # 2012-08-29 633334184 (amd64/Linux) new codegen - # 2012-09-18 641959976 (amd64/Linux) - # 2012-10-19 661832592 (amd64/Linux) -fPIC turned on - # 2012-10-23 642594312 (amd64/Linux) -fPIC turned off again - # 2012-11-12 658786936 (amd64/Linux) UNKNOWN REASON - # 2013-91-17 667160192 (x86_64/Linux) new demand analyser - # 2013-10-18 698612512 (x86_64/Linux) fix for #8456 - # 2014-02-10 660922376 (x86_64/Linux) call arity analysis - # 2014-07-17 651626680 (x86_64/Linux) roundabout update - # 2014-09-10 630299456 (x86_64/Linux) post-AMP-cleanup - # 2015-06-03 581460896 (x86_64/Linux) use +RTS -G1 - # 2015-10-28 695430728 (x86_64/Linux) emit Typeable at definition site - # 2015-10-28 756138176 (x86_64/Linux) inst-decl defaults go via typechecker (#12220) - # 2017-02-17 831733376 (x86_64/Linux) Type-indexed Typeable - # 2017-02-25 695354904 (x86_64/Linux) Early inlining patch - # 2017-04-21 659863176 (x86_64/Linux) Unknown - # 2018-07-10 670839456 (x86_64/Linux) Unknown (just updating) + collect_compiler_stats(['peak_megabytes_allocated','max_bytes_used'],15), + collect_compiler_stats('bytes allocated',5), only_ways(['normal']), extra_hc_opts('-dcore-lint -static'), @@ -161,63 +57,8 @@ else: test('T3294', [ - compiler_stats_num_field('max_bytes_used', # Note [residency] - [(wordsize(32), 28686588, 15), - # 17725476 (x86/OS X) - # 14593500 (Windows) - # 2013-02-10 20651576 (x86/Windows) - # 2013-02-10 20772984 (x86/OSX) - # 2013-11-13 24009436 (x86/Windows, 64bit machine) - # 2014-04-24 19882188 (x86/Windows, 64bit machine) - # 2014-12-22 26525384 (x86/Windows) Increase due to silent superclasses? - # 2015-07-11 43196344 (x86/Linux, 64-bit machine) use +RTS -G1 - # 2016-04-06 28686588 (x86/Linux, 64-bit machine) - - (wordsize(64), 34050960, 20)]), - # prev: 25753192 (amd64/Linux) - # 29/08/2012: 37724352 (amd64/Linux) - # (increase due to new codegen, see #7198) - # 13/13/2012: 44894544 (amd64/Linux) - # (reason for increase unknown) - # 15/5/2013: 36904752 (amd64/Linux) - # (reason for decrease unknown) - # 29/5/2013: 43224080 (amd64/Linux) - # (reason for increase back to earlier value unknown) - # 2014-07-14: 36670800 (amd64/Linux) - # (reason unknown, setting expected value somewhere in between) - # 2015-01-22: 45000000 (amd64/Linux) - # varies between 40959592 and 52914488... increasing to +-20% - # 2015-10-28: 50367248 (amd64/Linux) - # D757: emit Typeable instances at site of type definition - # 2016-07-11: 54609256 (Windows) before fix for #12227 - # 2016-07-11: 52992688 (Windows) after fix for #12227 - # 2017-02-17: 63131248 (amd64/Linux) Type indexed Typeable - # 2017-05-14: 34050960 (amd64/Linux) Two-pass CmmLayoutStack - - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 1377050640, 5), - # previous: 815479800 (x86/Linux) - # (^ increase due to new codegen, see #7198) - # 2012-10-08: 1373514844 (x86/Linux) - # 2013-11-13: 1478325844 (x86/Windows, 64bit machine) - # 2014-01-12: 1565185140 (x86/Linux) - # 2013-04-04: 1377050640 (x86/Windows, 64bit machine) - (wordsize(64), 1858491504, 5)]), - # old: 1357587088 (amd64/Linux) - # 29/08/2012: 2961778696 (amd64/Linux) - # (^ increase due to new codegen, see #7198) - # 18/09/2012: 2717327208 (amd64/Linux) - # 08/06/2013: 2901451552 (amd64/Linux) (reason unknown) - # 12/12/2013: 3083825616 (amd64/Linux) (reason unknown) - # 18/02/2014: 2897630040 (amd64/Linux) (call arity improvements) - # 12/03/2014: 2705289664 (amd64/Linux) (more call arity improvements) - # 2014-17-07: 2671595512 (amd64/Linux) (round-about update) - # 2014-09-10: 2709595808 (amd64/Linux) post-AMP cleanup - # 2016-07-11: 2664479936 (Windows) before fix for #12227 - # 2016-07-11: 2739731144 (Windows) after fix for #12227 (ignoring) - # 2017-02-17: 2758641264 (amd64/Linux) (Type indexed Typeable) - # 2017-05-14: 2253557280 (amd64/Linux) Two-pass CmmLayoutStack - # 2017-10-24: 1858491504 (amd64/Linux) Improved linear regAlloc + collect_compiler_stats('max_bytes_used',15), + collect_compiler_stats('bytes allocated',5), conf_3294, # Use `+RTS -G1` for more stable residency measurements. Note [residency]. @@ -227,173 +68,27 @@ test('T3294', ['']) test('T4801', - [ # expect_broken(5224), - # temporarily unbroken (#5227) -################################### -# deactivated for now, as this metric became too volatile recently -# compiler_stats_num_field('peak_megabytes_allocated',# Note [residency] -# [(platform('x86_64-apple-darwin'), 70, 1), -# # expected value: 58 (amd64/OS X) -# # 13/01/2014 - 70 -# (wordsize(32), 30, 20), -# (wordsize(64), 48, 20)]), -# # prev: 50 (amd64/Linux) -# # 19/10/2012: 64 (amd64/Linux) -# # (^ REASON UNKNOWN!) -# # 12/11/2012: 49 (amd64/Linux) -# # (^ REASON UNKNOWN!) -# # 28/8/13: 60 (amd64/Linux) -# # (^ REASON UNKNOWN!) -# # 2014-09-10: 55 post-AMP-cleanup -# # 2014-10-08: 62 (jumps between 55 and 71 observed -- GC tipping point?) -# # 2014-10-13: 48 stricter seqDmdType - - compiler_stats_num_field('bytes allocated', - [(platform('x86_64-apple-darwin'), 417302064, 10), - # prev: 510938976 (amd64/OS X): - # 2015-12-11: 465653312 (amd64/OS X) Update, bump tolerance to +/-10% - # 2017-03-24: 417302064 (amd64/OS X) Correlated with Linux improvement - - (wordsize(32), 199856388, 10), - # prev: 185669232 (x86/OSX) - # 2014-01-22: 211198056 (x86/Linux) - # 2014-09-03: 185242032 (Windows laptop) - # 2014-12-01: 203962148 (Windows laptop) - # 2016-04-06: 239556572 (x86/Linux) - # 2017-03-24: 199856388 (x86/Linux) - (wordsize(64), 388898280, 10)]), - # prev: 360243576 (amd64/Linux) - # 19/10/2012: 447190832 (amd64/Linux) (-fPIC turned on) - # 19/10/2012: 392409984 (amd64/Linux) (-fPIC turned off) - # 2014-04-08: 362939272 (amd64/Linux) cumulation of various smaller improvements over recent commits - # 2014-10-08: 382056344 (amd64/Linux) stricter foldr2 488e95b - # 2015-10-28: 434278248 (amd64/Linux) emit Typeable at definition site - # 2016-10-19: 388898280 (amd64/Linux) Refactor traceRn interface (#12617) - -################################### -# deactivated for now, as this metric became too volatile recently -# -# compiler_stats_num_field('max_bytes_used', -# [(platform('x86_64-apple-darwin'), 25145320, 5), -# (wordsize(32), 11829000, 15), -# # 9651948 (x86/OSX) -# # 10290952 (windows) -# # 2013-02-10 11071060 (x86/Windows) -# # 2013-02-10: 11207828 (x86/OSX) -# # (some date): 11139444 -# # 2013-11-13: 11829000 (x86/Windows, 64bit machine) -# (wordsize(64), 19296544, 15)]), -# # prev: 20486256 (amd64/OS X) -# # 30/08/2012: 17305600--20391920 (varies a lot) -# # 19/10/2012: 26882576 (-fPIC turned on) -# # 19/10/2012: 18619912 (-fPIC turned off) -# # 24/12/2012: 21657520 (perhaps gc sampling time wibbles?) -# # 10/01/2014: 25166280 -# # 13/01/2014: 22646000 (mostly due to #8647) -# # 18/02/2014: 25002136 (call arity analysis changes) -# # 12/05/2014: 25002136 (specialisation and inlining changes) -# # 10/09/2014: 19296544, 10 (post-AMP-cleanup) -# # 14/09/2014: 19585456, 15 (adapt to Phab CI env) - only_ways(['normal']), - extra_hc_opts('-static'), + [# collect_compiler_stats('peak_megabytes_allocated',1), + # expect_broken(5224), + # temporarily unbroken (#5227) + # deactivated for now, as this metric became too volatile recently + collect_compiler_stats('bytes allocated',10), + # collect_compiler_stats('max_bytes_used',5), + only_ways(['normal']), + extra_hc_opts('-static'), - # Use `+RTS -G1` for more stable residency measurements. Note [residency]. - extra_hc_opts('+RTS -G1 -RTS') - ], + # Use `+RTS -G1` for more stable residency measurements. Note [residency]. + extra_hc_opts('+RTS -G1 -RTS') + ], compile, ['']) test('T3064', - [compiler_stats_num_field('peak_megabytes_allocated',# Note [residency] - [(wordsize(32), 36, 20), - # expected value: 14 (x86/Linux 28-06-2012): - # 2013-11-13: 18 (x86/Windows, 64bit machine) - # 2014-01-22: 23 (x86/Linux) - # 2014-12-22: 23 (x86/Linux) death to silent superclasses - # 2015-07-11: 28 (x86/Linux, 64-bit machine) use +RTS -G1 - # 2017-04-06: 36 (x86/Linux, 64-bit machine) it's unclear + [collect_compiler_stats('peak_megabytes_allocated',20), + collect_compiler_stats('bytes allocated',10), - (wordsize(64), 66, 20)]), - # (amd64/Linux): 18 - # (amd64/Linux) 2012-02-07: 26 - # (amd64/Linux) 2013-02-12: 23; increased range to 10% - # (amd64/Linux) 2013-04-03: 26 - # (amd64/Linux) 2013-09-11: 30; result of AMP patch - # Increased range to 20%. peak-usage varies from 22 to 26, - # depending on whether the old .hi file exists - # (amd64/Linux) 2013-09-11: 37; better arity analysis (weird) - # (amd64/Linux) (09/09/2014): 42, AMP changes (larger interfaces, more loading) - # (amd64/Linux) 2014-10-13: 38: Stricter seqDmdType - # (amd64/Linux) 2014-12-22: 27: death to silent superclasses - # (amd64/Linux) 2015-01-22: 32: Varies from 30 to 34, at least here. - # (amd64/Linux) 2015-06-03: 54: use +RTS -G1 - # (amd64/Linux) 2016-10-25: 66: Presumably creep - - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 134044092, 10), - # 2011-06-28: 56380288 (x86/Linux) - # 2012-10-30: 111189536 (x86/Windows) - # 2013-11-13: 146626504 (x86/Windows, 64bit machine) - # 2014-01-22: 162457940 (x86/Linux) - # 2014-12-01: 162457940 (Windows) - # 2014-12-22: 122836340 (Windows) Death to silent superclasses - # 2016-04-06: 153261024 (x86/Linux) probably wildcard refactor - # 2017-03-24: 134044092 (x86/Linux, 64-bit machine) Update - - (wordsize(64), 272759920, 5)]), - # (amd64/Linux) (2011-06-28): 73259544 - # (amd64/Linux) (2013-02-07): 224798696 - # (amd64/Linux) (2013-08-02): 236404384, increase from roles - # (amd64/Linux) (2013-09-11): 290165632, increase from AMP warnings - # (amd64/Linux) (2013-11-22): 308300448, GND via Coercible and counters for constraints solving - # (amd64/Linux) (2013-12-02): 329795912, Coercible refactor - # (amd64/Linux) (2014-02-11): 308422280, optimize Coercions in simpleOptExpr - # (amd64/Linux) (2014-05-23): 324022680, unknown cause - # (amd64/Linux) (2014-07-17): 332702112, general round of updates - # (amd64/Linux) (2014-08-29): 313638592, w/w for INLINABLE things - # (amd64/Linux) (2014-09-09): 407416464, AMP changes (larger interfaces, more loading) - # (amd64/Linux) (2014-09-14): 385145080, BPP changes (more NoImplicitPrelude in base) - # (amd64/Linux) (2014-12-10): 363103840, improvements in constraint solver - # (Mac) (2014-12-18): 350418600, improvements to flattener - # (amd64/Linux) (2014-12-22): 243670824, Ha! Death to superclass constraints, makes - # much less code for Monad instances - # (amd64/Linux) (2015-12-01): 264952256, Regression due to Simon's wildcard refactor - # Tracked as #11151. - # (amd64/Linux) (2015-12-11): 304344936, Regression due to TypeInType - # Tracked as #11196 - # (amd64/Linux) (2016-04-15): 287460128 Improvement due to using coercionKind instead - # of zonkTcType (Trac #11882) - # (amd64/Darwin) (2017-01-23): 306222424 Presumably creep from recent changes (Typeable?) - # (amd64/Linux) (2017-02-14): 259815560 Early inline patch: 9% improvement - # (amd64/Linux) (2017-03-31): 265950920 Fix memory leak in simplifier - # (amd64/Linux) (2017-05-01): 281509496 Avoid excessive space usage from unfoldings in CoreTidy - # (amd64/Linux) (2017-05-01): 258505536 I think this is improvement in coercionKind e4ab65bd - # (amd64/Linux) (2018-08-04): 272759920 It's unclear - -################################### -# deactivated for now, as this metric became too volatile recently -# -# compiler_stats_num_field('max_bytes_used', -# [(wordsize(32), 11202304, 20), -# # 2011-06-28: 2247016 (x86/Linux) (28/6/2011): -# #(some date): 5511604 -# # 2013-11-13: 7218200 (x86/Windows, 64bit machine) -# # 2014-04-04: 11202304 (x86/Windows, 64bit machine) -# (wordsize(64), 13251728, 20)]), -# # (amd64/Linux, intree) (28/06/2011): 4032024 -# # (amd64/Linux, intree) (07/02/2013): 9819288 -# # (amd64/Linux) (14/02/2013): 8687360 -# # (amd64/Linux) (18/02/2013): 9397488 -# # (amd64/Linux) (02/08/2013): 10742536, increase from roles -# # (amd64/Linux) (19/08/2013): 9211816, decrease apparently from better eta reduction -# # (amd64/Linux) (11/09/2013): 12000480, increase from AMP warnings -# # 933cdf15a2d85229d3df04b437da31fdfbf4961f -# # (amd64/Linux) (22/11/2013): 16266992, GND via Coercible and counters for constraints solving -# # (amd64/Linux) (12/12/2013): 19821544, better One shot analysis -# # (amd64/Linux) (09/09/2014): 24357392, AMP changes (larger interfaces, more loading) -# # (amd64/Linux) (14/09/2014): 16053888, BPP changes (more NoImplicitPrelude in base) -# # (amd64/Linux) (19/09/2014): 18744992, unknown -# # (amd64/Linux) 2014-10-13: 13251728, Stricter seqDmdType + # deactivated for now, as this metric became too volatile recently + # collect_compiler_stats('max_bytes_used',20) only_ways(['normal']), @@ -409,37 +104,7 @@ test('T4007', ['$MAKE -s --no-print-directory T4007']) test('T5030', - [compiler_stats_num_field('bytes allocated', - [(wordsize(32), 345668088, 10), - # previous: 196457520 - # 2012-10-08: 259547660 (x86/Linux, new codegen) - # 2013-11-21: 198573456 (x86 Windows, 64 bit machine) - # 2014-12-10: 227205560 constraint solver got worse again; more aggressive solving - # of family-applications leads to less sharing, I think - # 2015-07-11: 201882912 reason unknown - # 2016-04-06: 345668088 likely TypeInType - - (wordsize(64), 794426536, 10)]), - # Previously 530000000 (+/- 10%) - # 17/1/13: 602993184 (x86_64/Linux) - # (new demand analyser) - # 2013-06-08 538467496 (x86_64/Linux) - # ^ reason unknown - # 2013-08-02 454498592 (amd64/Linux) - # decrease from more aggressive coercion optimisations from roles - # 2013-11-12 397672152 (amd64/Linux) - # big decrease following better CSE and arity - # 2014-07-17 409314320 (amd64/Linux) - # general round of updates - # 2014-09-10 385152728 post-AMP-cleanup - # 2014-12-08 340969128 constraint solver perf improvements (esp kick-out) - # 2014-12-10 449042120 constraint solver got worse again; more aggressive solving - # of family-applications leads to less sharing, I think - # 2015-03-17 403932600 tweak to solver algorithm - # 2015-12-11 653710960 TypeInType (see #11196) - # 2016-10-17 794426536 20% big increase following - # 31621b12 * A collection of type-inference refactorings. - # See ticket for more info + [collect_compiler_stats('bytes allocated', 10), only_ways(['normal']) ], @@ -447,47 +112,14 @@ test('T5030', ['-freduction-depth=300']) test('T5631', - [compiler_stats_num_field('bytes allocated', - [(wordsize(32), 570137436, 10), - # expected value: 392904228 (x86/Linux) - # 2014-04-04: 346389856 (x86 Windows, 64 bit machine) - # 2014-12-01: 390199244 (Windows laptop) - # 2016-04-06: 570137436 (amd64/Linux) many reasons - (wordsize(64), 1161885448, 5)]), - # expected value: 774595008 (amd64/Linux): - # expected value: 735486328 (amd64/Linux) 2012/12/12: - # expected value: 690742040 (amd64/Linux) Call Arity improvements - # 2014-09-09: 739704712 (amd64/Linux) AMP changes - # 2014-11-04: 776121120 (amd64/Linux) new-flatten-skolems - # 2015-06-01: 812288344 (amd64/Linux) unknown cause - # 2015-12-11: 1128828928 (amd64/Linux) TypeInType (see #11196) - # 2015-12-21: 1198327544 (Mac) TypeApplications (will fix with #11196) - # 2015-03-18: 1124068664 (Mac) optimize Unify & zonking - # 2016-10-19: 1024926024 (amd64/Linux) Refactor traceRn interface (#12617) - # 2016-11-10: 1077429456 (amd64/Linux) Stop -dno-debug-output suppressing -ddump-tc-trace - # 2017-02-17: 1517484488 (amd64/Linux) Type-indexed Typeable - # 2017-03-03: 1065147968 (amd64/Linux) Share Typeable KindReps - # 2017-03-31: 1037482512 (amd64/Linux) Fix memory leak in simplifier - # 2017-07-27: 1106015512 (Mac) Regresssion from tracking visibility in TypeEqOrigin - # should be fixed by #14037 - # 2018-06-18: 1161885448 (Mac) Not entirely clear - only_ways(['normal']) + [collect_compiler_stats('bytes allocated',10), + only_ways(['normal']) ], compile, ['']) test('parsing001', - [compiler_stats_num_field('bytes allocated', - [(wordsize(32), 232777056, 10), - # Initial: 274000576 - # 2017-03-24: 232777056 - (wordsize(64), 519401296, 5)]), - # expected value: 587079016 (amd64/Linux) - # 2016-09-01: 581551384 (amd64/Linux) Restore w/w limit (#11565) - # 2016-12-19: 493730288 (amd64/Linux) Join points (#12988) - # 2017-02-14: 463931280 Early inlining patch; acutal improvement 7% - # 2017-12-11: 490228304 BlockArguments - # 2018-04-09: 519401296 Inexplicable, collateral of #14737 + [collect_compiler_stats('bytes allocated',10), only_ways(['normal']), ], compile_fail, ['']) @@ -495,330 +127,53 @@ test('parsing001', test('T783', [ only_ways(['normal']), # no optimisation for this one - # expected value: 175,569,928 (x86/Linux) - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 225911912, 5), - # 2012-10-08: 226907420 (x86/Linux) - # 2013-02-10: 329202116 (x86/Windows) - # 2013-02-10: 338465200 (x86/OSX) - # 2014-04-04: 319179104 (x86 Windows, 64 bit machine) - # 2014-09-03: 223377364 (Windows) better specialisation, raft of core-to-core optimisations - # 2014-12-22: 235002220 (Windows) not sure why - # 2016-04-06: 249332816 (x86/Linux, 64-bit machine) - # 2017-03-24: 225911912 (x86/Linux, 64-bit machine) - - (wordsize(64), 481875416, 10)]), - # prev: 349263216 (amd64/Linux) - # 07/08/2012: 384479856 (amd64/Linux) - # 29/08/2012: 436927840 (amd64/Linux) - # 12/11/2012: 640324528 (amd64/Linux) - # (OldCmm removed: not sure why this got worse, the - # other perf tests remained about the same) - # 18/10/2013: 734038080 (amd64/Linux) - # (fix for #8456) - # 24/10/2013: 654804144 (amd64/Linux) - # (fix previous fix for #8456) - # 2014-07-17: 640031840 (amd64/Linux) - # (general round of updates) - # 2014-08-29: 441932632 (amd64/Linux) - # (better specialisation, raft of core-to-core optimisations) - # 2014-08-29: 719814352 (amd64/Linux) - # (changed order of cmm block causes analyses to allocate much more, - # but the changed order is slighly better in terms of runtime, and - # this test seems to be an extreme outlier.) - # 2015-05-16: 548288760 (amd64/Linux) - # (improved sequenceBlocks in nativeCodeGen, #10422) - # 2015-08-07: 470738808 (amd64/Linux) - # (simplifying the switch plan code path for simple checks, #10677) - # 2015-08-28: 526230456 (amd64/Linux) - # (D757: Emit Typeable instances at site of type definition) - # 2015-12-04: 1134085384 (amd64/Linux) - # (D1535: Major overhaul of pattern match checker, #11162) - # 2016-02-03: 488592288 (amd64/Linux) - # (D1795: Another overhaul of pattern match checker, #11374) - # 2017-02-14 436978192 Early inlining: 5% improvement - # 2017-09-08 481875416 Unknown - + collect_compiler_stats('bytes allocated',10), extra_hc_opts('-static') ], compile,['']) test('T5321Fun', [ only_ways(['normal']), # no optimisation for this one - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 244387620, 10), - # prev: 300000000 - # 2012-10-08: 344416344 x86/Linux - # (increase due to new codegen) - # 2014-09-03: 299656164 (specialisation and inlining) - # 2014-12-10: 206406188 # Improvements in constraint solver - # 2016-04-06: 279922360 x86/Linux - # 2017-03-24: 244387620 x86/Linux (64-bit machine) - - (platform('x86_64-apple-darwin'), 446893600, 5), - # 2018-03-17: 423774560 # OS X-only (reason unknown, see #11753) - - (wordsize(64), 423774560, 5)]) - # prev: 585521080 - # 2012-08-29: 713385808 # (increase due to new codegen) - # 2013-05-15: 628341952 # (reason for decrease unknown) - # 2013-06-24: 694019152 # (reason for re-increase unknown) - # 2014-05-12: 614409344 # (specialisation and inlining changes) - # 2014-09-10: 601629032 # post-AMP-cleanup - # 2014-11-06: 541287000 # Simon's flat-skol changes to the constraint solver - # 2014-12-10: 408110888 # Improvements in constraint solver - # 2014-12-16: 429921312 # Flattener parameterized over roles - # 2015-08-10: 509921312 - # (undefined now takes an implicit parameter and GHC -O0 does - # not recognize that the application is bottom) - # 2015-12-11: 565883176 # TypeInType (see #11196) - # 2017-01-06: 497356688 # Small coercion optimisations - # The actual decrease was only 2%; earlier - # commits had drifted down - # 2017-01-22: 525895608 # Allow top-level string literals in Core. I'm not - # convinced that this patch is - # responsible for all of this - # change, however. Namely I am - # quite skeptical of the downward - # "drift" reported above - # 2017-01-31: 498135752 # Join points (#12988) - # 2017-02-23: 524706256 # Type-indexed Typeable? (on Darwin) - # 2017-02-25: 488295304 # Early inlining patch - # 2017-05-14: 449577856 # (amd64/Linxu) Two-pass CmmLayoutStack - # 2017-12-13: 423774560 # (amd64/Linxu) Typechecker improvements + collect_compiler_stats('bytes allocated',10) ], compile,['']) test('T5321FD', [ only_ways(['normal']), # no optimisation for this one - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 250757460, 10), - # prev: 213380256 - # 2012-10-08: 240302920 (x86/Linux) - # (increase due to new codegen) - # 2014-07-31: 211699816 (Windows) (-11%) - # (due to better optCoercion, 5e7406d9, #9233) - # 2016-04-06: 250757460 (x86/Linux) - - (wordsize(64), 371826136, 10)]) - # prev: 418306336 - # 29/08/2012: 492905640 - # (increase due to new codegen) - # 15/05/2013: 406039584 - # (reason for decrease unknown) - # 08/06/2013: 476497048 - # (reason for increase unknown) - # before 2014-07-17: 441997096 - # (with -8%, still in range, hence cause not known) - # 2014-07-17: 426960992 (-11% of previous value) - # (due to better optCoercion, 5e7406d9, #9233) - # 2014-10-08 410895536 - # (various changes; biggest improvements due to 949ad67 and FastString package ids) - # 2015-08-10: 470895536 - # (undefined now takes an implicit parameter and GHC -O0 does - # not recognize that the application is bottom) - # 2015-10-28: 532365376 - # D757: emit Typeable instances at site of type definition - # 2016-07-16: 477840432 - # Optimize handling of built-in OccNames - # 2017-05-14: 415136648 (amd64/Linux) Two-pass CmmLayoutStack - # 2018-04-24: 371826136 (amd64/Linux) Store size in LitString + collect_compiler_stats('bytes allocated',10) ], compile,['']) test('T5642', [ only_ways(['normal']), normal, - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 413517560, 10), - # sample from x86/Linux - # prev: 650000000 - # 2014-09-03: 753045568 - # 2014-12-10: 641085256 Improvements in constraints solver - # 2016-04-06: 462677300 - # 2017-03-24: 413517560 (x86/Linux, 64-bit machine) - - (wordsize(64), 838316496, 10)]) - # prev: 1300000000 - # 2014-07-17: 1358833928 (general round of updates) - # 2014-08-07: 1402242360 (caused by 1fc60ea) -# Watch out for: - # 23/05/2014: 1452688392 (More aggressive specialisation means we get - # specialised copies of imported functions that - # are ultimately discarded by trimAutoRules - # It's a bizarre program with LOTS of data types) - # 2014-09-10: 1536924976 post-AMP-cleanup - # 2014-12-10: 1282916024 Improvements in constraints solver - # 2015-10-28: 1412808976 Emit Typeable at definition site - # 2015-11-22: 1071915072 Use TypeLits in the metadata encoding - # 2016-02-08: 950004816 Pattern match checker re-rework - # 2016-05-12: 1300685592 Make Generic1 poly-kinded - # 2016-06-05: 916484672 Refactor derived Generic instances to reduce allocations - # 2016-09-03: 838316496 Derive the Generic instance in perf/compiler/T5642 + collect_compiler_stats('bytes allocated',10) ], compile,['-O']) test('T5837', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 27028956, 10), - # 40000000 (x86/Linux) - # 2013-11-13: 45520936 (x86/Windows, 64bit machine) - # 2014-09-03: 37096484 (Windows laptop, w/w for INLINABLE things - # 2014-12-01: 135914136 (Windows laptop, regression see below) - # 2014-12-08: 115905208 Constraint solver perf improvements (esp kick-out) - # 2016-04-06: 24199320 (x86/Linux, 64-bit machine) TypeInType - # 2017-03-24: 27028956 (x86/Linux, 64-bit machine) - - (platform('x86_64-unknown-mingw32'), 54793816, 7), - # 2017-02-19 59161648 (x64/Windows) - Unknown - # 2017-04-21 54985248 (x64/Windows) - Unknown - # 2017-12-24 54793816 (x64/Windows) - Unknown - - (wordsize(64), 55813608, 7)]) - # 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 - # 2014-08-29 73639840 amd64/Linux, w/w for INLINABLE things - # 2014-10-08 73639840 amd64/Linux, Burning Bridges and other small changes - # 2014-11-06 271028976 Linux, Accept big regression; - # See Note [An alternative story for the inert substitution] in TcFlatten - # 2014-12-08 234790312 Constraint solver perf improvements (esp kick-out) - # 2014-12-16 231155640 Mac Flattener parameterized over roles; - # some optimization - # 2015-03-17 53424304 Mac Better depth checking; fails earlier - # 2015-06-09 38834096 Better "improvement"; I'm not sure whey it improves things - # 2015-12-11 43877520 amd64/Linux, TypeInType (see #11196) - # 2016-03-18 48507272 Mac, accept small regression in exchange - # for other optimisations - # 2016-09-15 42445672 Linux; fixing #12422 - # 2016-09-25 41832056 amd64/Linux, Rework handling of names (D2469) - # 2016-10-25 52597024 amd64/Linux, the test now passes (hooray), and so - # allocates more because it goes right down the - # compilation pipeline - # 2017-01-24 57861352 amd64/Linux, very likely due to the top-level strings - # in Core patch. - # 2017-02-07 50253880 Another improvement in SetLevels. I don't think - # all the gain here is from this patch, but I think it - # just pushed it over the edge, so I'm re-centreing, and - # changing to 5% tolerance - # 2017-02-07 53592736 amd64/Linux Simon's earlier decrease appears - # to be environmentally-dependent. - # Also bumped acceptance threshold to 7%. - # 2017-02-20 58648600 amd64/Linux Type-indexed Typeable - # 2017-02-28 54151864 amd64/Linux Likely drift due to recent simplifier improvements - # 2017-02-25 52625920 amd64/Linux Early inlining patch - # 2017-09-06 56782344 amd64/Linux Drift manifest in unrelated LLVM patch - # 2017-10-24 52089424 amd64/linux Fix space leak in BinIface.getSymbolTable - # 2018-02-19 55813608 amd64/Linux Unknown + collect_compiler_stats('bytes allocated',10) ], compile, ['-freduction-depth=50']) test('T6048', [ only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 55701280, 10), - # prev: 38000000 (x86/Linux) - # 2012-10-08: 48887164 (x86/Linux) - # 2014-04-04: 62618072 (x86 Windows, 64 bit machine) - # 2014-09-03: 56315812 (x86 Windows, w/w for INLINABLE) - # 2014-12-01: 49987836 (x86 Windows) - # 2016-04-06: 55701280 (x86/Linux, 64-bit machine) - - (wordsize(64), 100574504, 10)]) - # 2012-09-18 97247032 amd64/Linux - # 2014-01-16 108578664 amd64/Linux (unknown, likely foldl-via-foldr) - # 2014-01-18 95960720 amd64/Linux Call Arity improvements - # 2014-02-28 105556793 amd64/Linux (unknown, tweak in base/4d9e7c9e3 resulted in change) - # 2014-03-05 110646312 amd64/Linux Call Arity became more elaborate - # 2014-07-14 125431448 amd64/Linux unknown reason. Even worse in GHC-7.8.3. *shurg* - # 2014-08-29 108354472 amd64/Linux w/w for INLINABLE things - # 2014-09-14 88186056 amd64/Linux BPP part1 change (more NoImplicitPreludes in base) - # 2014-01-08 95946688 amd64/Linux Mostly 4c834fd. Occasional spikes to 103822120! - # 2016-03-11 108225624 amd64/Linux unknown reason sadly; likely gradual creep. - # 2016-11-25 94327392 amd64/Linux Back down again hooray; still not sure why - # 2017-02-17 115715592 amd64/Linux Type-indexed Typeable - # 2017-04-28 90996312 Join point refactoring - # 2018-06-18 100574504 Darwin Unclear + collect_compiler_stats('bytes allocated',10) ], compile,['']) test('T9020', [ only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(wordsize(32), 249904136, 10), - # Original: 381360728 - # 2014-07-31: 343005716 (Windows) (general round of updates) - # 2017-03-24: 249904136 (x86/Linux, 64-bit machine) - - (wordsize(64), 391876936, 10)]) - # prev: 795469104 - # 2014-07-17: 728263536 (general round of updates) - # 2014-09-10: 785871680 post-AMP-cleanup - # 2014-11-03: 680162056 Further Applicative and Monad adjustments - # 2015-10-21: 786189008 Make stronglyConnCompFromEdgedVertices deterministic - # 2016-01-26: 698401736 improvement from using ExpTypes instead of ReturnTvs - # 2016-04-06: 852298336 Refactoring of CSE #11781 - # 2016-04-06: 698401736 Use thenIO in Applicative IO - # 2017-02-03: 764866144 Join points - # 2017-02-14: 500707080 Early inline patch; 35% decrease! - # Program size collapses in first simplification - # 2017-03-31: 493596312 Fix memory leak in simplifier - # 2017-04-28: 423163832 Remove exponential behaviour in simplifier - # 2018-04-09: 562206104 Inexplicable, collateral of #14737 - # 2018-05-14: 391876936 Improved simplCast performance #15019 + collect_compiler_stats('bytes allocated',10) ], compile,['']) test('T9675', [ only_ways(['optasm']), - compiler_stats_num_field('max_bytes_used', # Note [residency] - [(wordsize(64), 17675240, 15), - # 2014-10-13 29596552 - # 2014-10-13 26570896 seq the DmdEnv in seqDmdType as well - # 2014-10-13 18582472 different machines giving different results.. - # 2014-10-13 22220552 use the mean - # 2015-06-21 28056344 switch to `+RTS -G1`, tighten bound to 15% - # 2015-10-28 23776640 emit Typeable at definition site - # 2015-12-11 30837312 TypeInType (see #11196) - # 2016-03-14 38776008 Final demand analyzer run - # 2016-04-01 29871032 Fix leaks in demand analysis - # 2016-04-30 17675240 Fix leaks in tidy unfoldings - (wordsize(32), 18043224, 15) - # 2015-07-11 15341228 (x86/Linux, 64-bit machine) use +RTS -G1 - # 2016-04-06 18043224 (x86/Linux, 64-bit machine) - ]), - compiler_stats_num_field('peak_megabytes_allocated', # Note [residency] - [(wordsize(64), 63, 15), - # 2014-10-13 66 - # 2014-10-13 58 seq the DmdEnv in seqDmdType as well - # 2014-10-13 49 different machines giving different results... - # 2014-10-13 53 use the mean - # 2015-06-15 44 reduced for some reason - # 2015-06-21 105 switch to `+RTS -G1` - # 2015-12-04 88 new pattern checker (D1535) - # 2015-12-11 113 TypeInType (see #11196) - # 2016-04-14 144 Final demand analyzer run - # 2016-07-26 121 Unboxed sums? - # 2017-04-30 63 Fix leaks in tidy unfoldings - (wordsize(32), 56, 15) - # 2015-07-11 56 (x86/Linux, 64-bit machine) use +RTS -G1 - ]), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 656137960, 10) - # 2014-10-13 544489040 - # 2015-10-28 608284152 emit Typeable at definition site - # 2017-02-17 731171072 Type-indexed Typeable - # 2017-03-13 656137960 Put join ceiling underneath lambdas? - - ,(wordsize(32), 322901484, 10) - # 2015-07-11 279480696 (x86/Linux, 64-bit machine) use +RTS -G1 - # 2017-03-24 322901484 (x86/Linux, 64-bit machine) - - ]), + # Note [residency] + collect_compiler_stats(['max_bytes_used','peak_megabytes_allocated'],15), + collect_compiler_stats('bytes allocated',10), # Use `+RTS -G1` for more stable residency measurements. Note [residency]. extra_hc_opts('+RTS -G1 -RTS') @@ -828,145 +183,40 @@ test('T9675', test('T9872a', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 2729927408, 5), - # 2014-12-10 5521332656 Initally created - # 2014-12-16 5848657456 Flattener parameterized over roles - # 2014-12-18 2680733672 Reduce type families even more eagerly - # 2015-12-11 3581500440 TypeInType (see #11196) - # 2016-04-07 3352882080 CSE improvements - # 2016-10-19 3134866040 Refactor traceRn interface (#12617) - # 2017-02-17 3298422648 Type-indexed Typeable - # 2017-02-25 3005891848 Early inlining patch - # 2018-03-26 2729927408 Flattener update with optimizations (#12919) - - (wordsize(32), 1493198244, 5) - # was 1325592896 - # 2016-04-06 1740903516 x86/Linux - # 2017-03-24 1493198244 x86/Linux, 64-bit machine - ]), + collect_compiler_stats('bytes allocated',5) ], compile_fail, ['']) test('T9872b', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 3730686224, 5), - # 2014-12-10 6483306280 Initally created - # 2014-12-16 6892251912 Flattener parameterized over roles - # 2014-12-18 3480212048 Reduce type families even more eagerly - # 2015-12-11 5199926080 TypeInType (see #11196) - # 2016-02-08 4918990352 Improved a bit by tyConRolesRepresentational - # 2016-04-06: 4600233488 Refactoring of CSE #11781 - # 2016-09-15: 4069522928 Fix #12422 - # 2017-02-14 3730686224 Early inlining: 5% improvement - - (wordsize(32), 1894037608, 5) - # was 1700000000 - # 2016-04-06 2422750696 x86/Linux - # 2017-03-24 1894037608 x86/Linux, 64-bit machine - ]), + collect_compiler_stats('bytes allocated',5) ], compile_fail, ['']) test('T9872c', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 3096670112, 5), - # 2014-12-10 5495850096 Initally created - # 2014-12-16 5842024784 Flattener parameterized over roles - # 2014-12-18 2963554096 Reduce type families even more eagerly - # 2015-12-11 4723613784 TypeInType (see #11196) - # 2016-02-08 4454071184 Improved a bit by tyConRolesRepresentational - # 2016-04-06: 4306667256 Refactoring of CSE #11781 - # 2016-09-15: 3702580928 Fixing #12422 - # 2017-02-14 3404346032 Early inlining: 5% improvement - # 2018-03-25 3096670112 Flattener patch with optimizations (#12919) - - (wordsize(32), 1727582260, 5) - # was 1500000000 - # 2016-04-06 2257242896 - # 2017-03-24 1727582260 x86/Linux, 64-bit machine - ]), + collect_compiler_stats('bytes allocated',5) ], compile_fail, ['']) test('T9872d', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 578498120, 5), - # 2014-12-18 796071864 Initally created - # 2014-12-18 739189056 Reduce type families even more eagerly - # 2015-01-07 687562440 TrieMap leaf compression - # 2015-03-17 726679784 tweak to solver; probably flattens more - # 2015-12-11 566134504 TypeInType; see #11196 - # 2016-02-08 534693648 Improved a bit by tyConRolesRepresentational - # 2016-03-18 506691240 optimize Unify & zonking - # 2016-12-05 478169352 using tyConIsTyFamFree, I think, but only - # a 1% improvement 482 -> 478 - # 2017-02-17 535565128 Type-indexed Typeable - # 2017-02-25 498855104 Early inlining - # 2017-03-03 462817352 Share Typeable KindReps - # 2018-03-25 526485920 Flattener patch does more work (#12919) - # 2018-04-11 572537984 simplCast improvement collateral (#11735) - # 2018-07-04 578498120 introduce GRefl (#15192) - - (wordsize(32), 232954000, 5) - # some date 328810212 - # 2015-07-11 350369584 - # 2016-04-06 264566040 x86/Linux - # 2017-03-24 232954000 x86/Linux, 64-bit machine - ]), + collect_compiler_stats('bytes allocated',5) ], compile, ['']) test('T9961', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 498326216, 5), - # 2015-01-12 807117816 Initally created - # 2015-spring 772510192 Got better - # 2015-05-22 663978160 Fix for #10370 improves it more - # 2015-10-28 708680480 x86_64/Linux Emit Typeable at definition site - # 2015-12-17 745044392 x86_64/Darwin Creep upwards - # 2016-03-20 519436672 x64_64/Linux Don't use build desugaring for large lists (#11707) - # 2016-03-24 568526784 x64_64/Linux Add eqInt* variants (#11688) - # 2016-09-01 537297968 x64_64/Linux Restore w/w limit (#11565) - # 2016-12-19 571246936 x64_64/Linux Join points (#12988) - # 2017-02-14 498326216 Early inline patch; 13% improvement - - (wordsize(32), 255409052, 5) - # was 375647160 - # 2016-04-06 275264188 x86/Linux - # 2017-03-24 255409052 x86/Linux, 64-bit machine - ]), + collect_compiler_stats('bytes allocated',5) ], compile, ['-O']) test('T9233', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 973149832, 5), - # 2015-08-04 999826288 initial value - # 2016-04-14 1066246248 Final demand analyzer run - # 2016-06-18 984268712 shuffling around of Data.Functor.Identity - # 2017-01-20 920101608 Improvement to SetLevels apparently saved 4.2% in - # compiler allocation. Program size seems virtually - # unchanged; maybe the compiler itself is a little faster - # 2017-01-23 861862608 worker/wrapper evald-ness flags; another 5% improvement! - # 2017-02-01 894486272 Join points - # 2017-02-07 884436192 Another improvement to SetLevels - # 2017-02-17 974530192 Type-indexed Typeable - # 2017-03-21 924299320 It's unclear - # 2018-06-09 973149832 It's unclear - - (wordsize(32), 460112888, 5) - # 2016-04-06 515672240 (x86/Linux) initial value - # 2017-03-24 460112888 x86/Linux, 64-bit machine - ]), + collect_compiler_stats('bytes allocated',5), extra_clean(['T9233a.hi', 'T9233a.o']) ], multimod_compile, @@ -974,42 +224,8 @@ test('T9233', test('T10370', [ only_ways(['optasm']), - compiler_stats_num_field('max_bytes_used', # Note [residency] - [(wordsize(64), 31524048, 15), - # 2015-10-22 19548720 - # 2016-02-24 22823976 Changing Levity to RuntimeRep; not sure why this regresses though, even after some analysis - # 2016-04-14 28256896 final demand analyzer run - # 2016-08-08 33049304 - # This change happened because we changed the behavior - # of inlining across hs-boot files, so that we don't - # inline if something comes from a boot file. This - # affected stats on bootstrapped GHC. However, - # when I set -i0.01 with profiling, the heap profiles - # were identical, so I think it's just GC noise. - # 2016-10-20 38221184 Allow top-level string literals. - # See the comment 16 on #8472. - # 2017-02-17 51126304 Type-indexed Typeable - # 2017-02-27 43455848 Likely drift from recent simplifier improvements - # 2017-02-25 41291976 Early inline patch - # 2017-04-30 31524048 Fix leaks in tidy unfoldings + collect_compiler_stats(['max_bytes_used','peak_megabytes_allocated'], 15), - (wordsize(32), 19276304, 15), - # 2015-10-22 11371496 - # 2017-03-24 19276304 (x86/Linux, 64-bit machine) - ]), - compiler_stats_num_field('peak_megabytes_allocated', # Note [residency] - [(wordsize(64), 117, 15), - # 2015-10-22 76 - # 2016-04-14 101 final demand analyzer run - # 2016-08-08 121 see above - # 2017-01-18 146 Allow top-level string literals in Core - # 2017-02-17 187 Type-indexed Typeable - # 2017-02-25 154 Early inline patch - # 2017-04-30 117 Fix leaks in tidy unfoldings - (wordsize(32), 69, 15), - # 2015-10-22 39 - # 2017-03-24 69 - ]), # Use `+RTS -G1` for more stable residency measurements. Note [residency]. extra_hc_opts('+RTS -G1 -RTS') ], @@ -1017,32 +233,14 @@ test('T10370', ['']) test('T10547', - [ compiler_stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 37485128, 20), - # 2017-02-19 37485128 (x64/Windows) - Unknown - - (wordsize(64), 37681360, 20), - # initial: 39165544 - # 2016-11-25: 31041520 Linux Around the time of refactoring the constraint solver; - # but I think that only pushed it over the edge - # 2017-02-20: 38681216 Linux Type-indexed Typeable - ]), + [ collect_compiler_stats('bytes allocated', 20), ], compile_fail, ['-fprint-expanded-synonyms']) test('T12227', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 752214784, 5), - # 2016-07-11 5650186880 (Windows) before fix for #12227 - # 2016-07-11 1822822016 (Windows) after fix for #12227 - # 2016-12-20 1715827784 after d250d493 (INLINE in Traversable dms) - # (or thereabouts in the commit history) - # 2017-02-14 1060158624 Early inlining: 35% improvement - # 2018-01-04 812869424 Drop unused givens (#13032): 23% better - # 2018-06-27 752214784 Trac #15421 - ]), + collect_compiler_stats('bytes allocated',5) ], compile, # Use `-M1G` to prevent memory thrashing with ghc-8.0.1. @@ -1050,52 +248,21 @@ test('T12227', test('T12425', [ only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 139100464, 5), - # initial: 125831400 - # 2017-01-18: 133380960 Allow top-level string literals in Core - # 2017-02-17: 153611448 Type-indexed Typeable - # 2017-03-03: 142256192 Share Typeable KindReps - # 2017-03-21: 134334800 Unclear - # 2017-04-28: 127500136 Remove exponential behaviour in simplifier - # 2017-05-23: 134780272 Addition of llvm-targets in dynflags (D3352) - # 2018-04-15: 141952368 Collateral of #14737 - # 2018-04-26: 150743648 Do not unpack class dictionaries with INLINABLE - # 2018-05-14: 139100464 improved simplCast performance #15019 - ]), + collect_compiler_stats('bytes allocated',5) ], compile, ['']) test('T12234', [ only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 79889200, 5), - # initial: 83032768 - # 2017-02-19 89180624 (x64/Windows) - Unknown - # 2017-02-25 79889200 (x64/Windows) - Early inline patch - # 2018-05-04 86938328 (x64/Windows) - Unknown and horrible - (wordsize(64), 85961968, 5), - # initial: 72958288 - # 2016-01-17: 76848856 (x86-64, Linux. drift?) - # 2017-02-01: 80882208 (Use superclass instances when solving) - # 2017-02-05: 74374440 (Probably OccAnal fixes) - # 2017-02-17: 86525344 (Type-indexed Typeable) - # 2017-02-25: 83032768 (Early inline patch) - # 2017-09-07: 81696664 (Semigroup=>Monoid patch, D3927) - # 2018-04-26: 85961968 (Do not unpack class dictionaries with INLINABLE) - ]), + collect_compiler_stats('bytes allocated',5), ], compile, ['']) test('T12545', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 3249613688, 5), - # 2017-06-08 3538652464 initial - # 2018-06-27 3249613688 Trac #15421 - ]), + collect_compiler_stats('bytes allocated',5), extra_clean(['T12545a.hi', 'T12545a.o']) ], multimod_compile, @@ -1103,87 +270,39 @@ test('T12545', test('T13035', [ only_ways(['normal']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 125020728, 5), - # 2017-01-05 90595208 initial - # 2017-01-19 95269000 Allow top-level string literals in Core - # 2017-02-05 88806416 Probably OccAnal fixes - # 2017-02-17 103890200 Type-indexed Typeable - # 2017-02-25 98390488 Early inline patch - # 2017-03-21 93249744 It's unclear - # 2017-07-19 118665640 Generate Typeable bindings for data instances - # 2018-06-10 125020728 It's unclear - ]), + collect_compiler_stats('bytes allocated',5), ], compile, [''] ) test('T13056', [ only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 440548592, 10), - # 2017-01-06 520166912 initial - # 2017-01-31 546800240 Join points (#12988) - # 2017-02-07 524611224 new SetLevels - # 2017-02-14 440548592 Early inline patch: 16% improvement - # 2017-04-21 417860736 (darwin) - # 2017-04-22 Increase to +/- 10% (Darwin and Linux differ significantly) - ]), + collect_compiler_stats('bytes allocated',10), ], compile, ['-O1']) test('T12707', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 1141555816, 5), - # initial: 1271577192 - # 2017-01-22: 1348865648 Allow top-level strings in Core - # 2017-01-31: 1280336112 Join points (#12988) - # 2017-02-11: 1310037632 Check local family instances vs imports - # 2017-02-23: 1386110512 Type-indexed Typeable? (on Darwin) - # 2017-03-02: 1231809592 Drift from recent simplifier improvements - # 2017-05-14: 1163821528 (amd64/Linux) Two-pass CmmLayoutStack - # 2018-04-09: 1237898376 Inexplicable, collateral of #14737 - # 2018-04-30: 1141555816 improved simplCast performance #15019 - ]), + [ collect_compiler_stats('bytes allocated',5), ], compile, ['']) test('T12150', [ only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(wordsize(64), 77557800, 5) - # initial: 70773000 - # 2017-08-25: 74358208 Refactor the Mighty Simplifier - # 2017-08-25: 78300680 Drift - # 2017-10-25: 73769936 amd64/linux Fix space leak in BinIface.getSymbolTable - # 2018-04-26: 77557800 Do not unpack class dictionaries with INLINABLE - ]), + collect_compiler_stats('bytes allocated',5) ], compile, ['']) test('T13379', - [ compiler_stats_num_field('bytes allocated', - [(platform('x86_64-apple-darwin'), 453166912, 10), - # 453166912: add osx-specific after two-pass CmmLayoutStack - (wordsize(64), 411597856, 10), - # initial: 411597856 - # widen window to 10%, Darwin had 449080520, a 9.1% difference - ]), + [ collect_compiler_stats('bytes allocated',10), ], compile, ['']) test('MultiLayerModules', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 5619893176, 10), - # initial: 12139116496 - # 2017-05-12: 6956533312 Revert "Use a deterministic map for imp_dep_mods" - # 2017-05-31: 6294813000 Faster checkFamInstConsistency - # 2018-01-21: 5619893176 Allocate less in plus_mod_dep - ]), + [ collect_compiler_stats('bytes allocated',10), pre_cmd('./genMultiLayerModules'), extra_files(['genMultiLayerModules']), compile_timeout_multiplier(2) @@ -1196,11 +315,7 @@ test('MultiLayerModules', ['MultiLayerModules', '-v0']) test('ManyConstructors', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 4246959352, 10), - # initial: 8130527160 - # 2018-01-05: 4246959352 Lift constructor tag allocation out of a loop - ]), + [ collect_compiler_stats('bytes allocated',10), pre_cmd('./genManyConstructors'), extra_files(['genManyConstructors']), ], @@ -1208,11 +323,7 @@ test('ManyConstructors', ['ManyConstructors', '-v0']) test('ManyAlternatives', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 1398898072, 10), - # initial: 1756999240 - # 2018-01-20: 1398898072 Use IntSet in Dataflow - ]), + [ collect_compiler_stats('bytes allocated',10), pre_cmd('./genManyAlternatives'), extra_files(['genManyAlternatives']), ], @@ -1220,18 +331,7 @@ test('ManyAlternatives', ['ManyAlternatives', '-v0']) test('T13701', - [ compiler_stats_num_field('bytes allocated', - [(platform('x86_64-apple-darwin'), 2549206272, 10), - (platform('x86_64-unknown-linux'), 2413253392, 10), - # initial: 2511285600 - # 2017-06-23: 2188045288 treat banged variable bindings as FunBinds - # 2017-07-11: 2187920960 - # 2017-07-12: 2412223768 inconsistency between Ben's machine and Harbormaster? - # 2017-07-17: 2133380768 Resolved the issue causing the inconsistencies in this test - # 2018-05-09: 2413253392 D4659 (Fix GHCi space leaks) added - # some strictness which causes some extra - # work to be done in this test. - ]), + [ collect_compiler_stats('bytes allocated',10), pre_cmd('./genT13701'), extra_files(['genT13701']), compile_timeout_multiplier(2) @@ -1244,11 +344,7 @@ test('T13701', ['T13701', '-v0']) test('T13719', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 5187889872, 10), - # initial: 49907410784 - # 2017-05-31: 5187889872 Faster checkFamInstConsistency - ]), + [ collect_compiler_stats('bytes allocated',10), pre_cmd('./genT13719'), extra_files(['genT13719']), compile_timeout_multiplier(2) @@ -1261,12 +357,7 @@ test('T13719', ['T13719', '-v0']) test('T14697', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 371030912, 10), - # initial: 635573784 - # 2018-02-23: 337290376 Cache the fingerprint of sOpt_P - # 2018-05-24: 371030912 Unknown - ]), + [ collect_compiler_stats('bytes allocated',10), # This generates too large of a command-line for poor Windows when(opsys('mingw32'), expect_broken(15072)), pre_cmd('./genT14697'), @@ -1277,12 +368,7 @@ test('T14697', ['T14697', '-v0']) test('T14683', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 10521594688, 10), - # initial: 25189145632 - # 2018-04-19: 14675353056 Cache NthCo role (#14683) - # 2018-04-20: 10521594688 Remove unnecessary check in simplCast - ]), + [ collect_compiler_stats('bytes allocated',10), ], multimod_compile, ['T14683', '-v0']) @@ -1290,35 +376,20 @@ test('T14683', test('Naperian', [ reqlib('vector'), only_ways(['optasm']), - compiler_stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 54116696, 10), - # 2017-12-24 54116696 (x64/Windows) - Unknown - (wordsize(64), 53576760, 10)]) - # 2018-01-25 53576760 (x64/Linux) - The previous value looked very wrong + collect_compiler_stats('bytes allocated',10), ], compile, ['']) test ('T9630', - [ compiler_stats_num_field('max_bytes_used', # Note [residency] - [(platform('x86_64-unknown-mingw32'), 39867088, 15), - # 2017-12-24: 34171816 (x64/Windows) - (wordsize(64), 35324712, 15) - # initial: 56955240 - # 2017-06-07: 41568168 Stop the specialiser generating loopy code - # 2018-02-25: 35324712 It's not entirely clear - ]), + [ collect_compiler_stats('max_bytes_used',15), # Note [residency] extra_clean(['T9630a.hi', 'T9630a.o']) ], multimod_compile, ['T9630', '-v0 -O']) test ('T15164', - [ compiler_stats_num_field('bytes allocated', - [(wordsize(64), 1945564312, 10) - # initial: 3423873408 - # 2018-05-22: 1945564312 Fix bottleneck in CallArity - ]) + [ collect_compiler_stats('bytes allocated',10) ], compile, ['-v0 -O']) diff --git a/testsuite/tests/perf/haddock/all.T b/testsuite/tests/perf/haddock/all.T index 393a69706e..fca30366f9 100644 --- a/testsuite/tests/perf/haddock/all.T +++ b/testsuite/tests/perf/haddock/all.T @@ -5,71 +5,7 @@ test('haddock.base', [extra_files(['../../../../libraries/base/dist-install/haddock.t']), unless(in_tree_compiler(), skip), req_haddock - ,stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 18733710728, 5) - # 2017-02-19 24286343184 (x64/Windows) - Generalize kind of (->) - # 2017-12-24 18733710728 (x64/Windows) - Unknown - - ,(wordsize(64), 24662232152, 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) - # 2017-02-16: 32695562088 Better Lint for join points - # 2017-02-17: 38425793776 (x86_64/Linux) - Generalize kind of (->) - # 2017-02-12: 25592972912 (x86_64/Linux) - Type-indexed Typeable - # 2017-06-05: 27868466432 (x86_64/Linux) - Desugar modules compiled with -fno-code - # 2017-06-06: 25173968808 (x86_64/Linux) - Don't pass on -dcore-lint in Haddock.mk - # 2017-07-12: 23677299848 (x86_64/Linux) - Use getNameToInstancesIndex - # 2017-08-22: 19694554424 (x86_64/Linux) - Various Haddock optimizations - # 2018-03-31: 20980255200 (x86_64/Linux) - Track type variable scope more carefully - # previous to this last commit, the allocations were right below the top - # of the range. This commit adds only ~1.5% allocations. - # 2018-04-10: 18511324808 (x86_64/Linux) - TTG HsBinds and Data instances - # 2018-04-11: 20727464616 (x86_64/Linux) - Collateral of simplCast improvement (#14737) - # 2018-04-20: 18971030224 (x86_64/Linux) - Cache coercion roles - # 2018-05-14: 21123660336 (amd64/Linux) - D4659: strictness to fix space leaks - # 2018-06-14: 24662232152 (amd64/Linux) - Bump haddock - - ,(platform('i386-unknown-mingw32'), 2885173512, 5) - # 2013-02-10: 3358693084 (x86/Windows) - # 2013-11-13: 3097751052 (x86/Windows, 64bit machine) - # 2014-04-04: 3548581572 (x86/Windows, 64bit machine) - # 2014-12-01: 4202377432 (x86/Windows, 64bit machine) - # 2015-01-20: 4434804940 (x86/Windows, 64bit machine) - # 2017-04-02: 2885173512 update - - ,(wordsize(32), 3445319728, 5)]) - # 2012-08-14: 3046487920 (x86/OSX) - # 2012-10-30: 2955470952 (x86/Windows) - # 2013-02-10: 3146596848 (x86/OSX) - # 2014-02-22: 3554624600 (x86/Linux - new haddock) - # 2014-06-29: 3799130400 (x86/Linux) - # 2016-04-06: 5509757068 (x86/Linux) - # 2017-03-24: 3819657568 (x86/Linux) - # 2017-04-06: 3445319728 (x86/Linux) + ,collect_stats('bytes allocated',5) ], stats, ['haddock.t']) @@ -77,78 +13,7 @@ test('haddock.base', test('haddock.Cabal', [extra_files(['../../../../libraries/Cabal/Cabal/dist-install/haddock.t']), unless(in_tree_compiler(), skip), req_haddock - ,stats_num_field('bytes allocated', - [(wordsize(64), 27520214496, 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 - # 2016-04-06: 11542374816 (amd64/Linux) - CSE improvements and others - # 2016-04-07: 10963514352 (amd64/Linux) - Revert to what phabricator claims - # 2016-05-22: 11805238152 (amd64/Linux) - Make Generic1 poly-kinded - # 2016-06-05: 10997887320 (amd64/Linux) - Refactor derived Generic instances to reduce allocations - # 2016-06-21: 10070330520 (amd64/Linux) - D2350: Make checkFamInstConsistency less expensive - # 2016-08-07: 16001233464 (amd64/Linux) - Cabal update - # It's worth noting that allocations scale up with the number - # of modules in Cabal. This Cabal update added a large number - # of new modules; if you exclude them from the haddock run - # the stats are comparable. - # 2016-10-01: 20619433656 (amd64/Linux) - Cabal update - # 2016-10-03: 21554874976 (amd64/Linux) - Cabal update - # 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) - # 2017-02-16: 23867276992 Better Lint for join points - # 2017-02-17: 27784875792 (amd64/Linux) - Generalize kind of (->) - # 2017-02-12: 18865432648 (amd64/Linux) - Type-indexed Typeable - # 2017-05-31: 18269309128 (amd64/Linux) - Faster checkFamInstConsistency - # 2017-06-05: 22294859000 (amd64/Linux) - Desugar modules compiled with -fno-code - # 2017-06-05: 18753963960 (amd64/Linux) - Don't pass on -dcore-lint in Haddock.mk - # 2017-08-22: 15857428040 (amd64/Linux) - Various Haddock optimizations - # 2017-11-02: 17133915848 (amd64/Linux) - Phabricator D4144 - # 2017-11-06: 18936339648 (amd64/Linux) - Unknown - # 2017-11-09: 20104611952 (amd64/Linux) - Bump Cabal - # 2018-01-22: 25261834904 (amd64/Linux) - Bump Cabal - # 2018-04-10: 23525241536 (amd64/Linux) - TTG HsBinds and Data instances - # 2018-05-14: 24519860272 (amd64/Linux) - D4659: strictness to fix space leaks - # 2018-06-14: 27520214496 (amd64/Linux) - Bump haddock - - ,(platform('i386-unknown-mingw32'), 3293415576, 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-12-01: 3088635556 (x86/Windows) - # 2015-01-20: 3293415576 - - ,(wordsize(32), 3511151136, 5)]) - # 2012-08-14: 1648610180 (x86/OSX) - # 2014-01-22: 1986290624 (x86/Linux) - # 2014-06-29: 2127198484 (x86/Linux) - # 2016-04-06: 6268156056 (x86/Linux) - # 2017-03-24: 3511151136 (x86/Linux) + ,collect_stats('bytes allocated',5) ], stats, ['haddock.t']) @@ -156,49 +21,7 @@ test('haddock.Cabal', test('haddock.compiler', [extra_files(['../../../../compiler/stage2/haddock.t']), unless(in_tree_compiler(), skip), req_haddock - ,stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 56775301896, 10), - # 2017-12-24: 56775301896 (x64/Windows) - (wordsize(64), 63038317672, 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) - # 2014-07-17: 29809571376 (amd64/Linux) general round of updates - # 2012-11-27: 28708374824 (amd64/Linux) - # 2014-09-10: 30353349160 (amd64/Linux) post-AMP cleanup - # 2014-11-22: 33562468736 (amd64/Linux) - # 2015-06-02: 36740649320 (amd64/Linux) unknown cause - # 2015-06-29: 40624322224 (amd64/Linux) due to #10482, not yet investigated - # 2015-12-03: 44721228752 (amd64/Linux) slow creep upwards - # 2015-12-15: 49395782136 (amd64/Linux) more creep, following kind-equalities - # 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) - # 2017-02-25: 55777283352 (amd64/Linux) Early inline patch - # 2017-05-31: 52762752968 (amd64/Linux) Faster checkFamInstConsistency - # 2017-06-05: 65378619232 (amd64/Linux) Desugar modules compiled with -fno-code - # 2017-06-06: 55990521024 (amd64/Linux) Don't pass on -dcore-lint in Haddock.mk - # 2017-07-12: 51592019560 (amd64/Linux) Use getNameToInstancesIndex - # 2018-04-08: 91115212032 (amd64/Linux) Trees that grow - # 2018-04-10: 58410358720 (amd64/Linux) Trees that grow (HsBinds, Data instances) - # 2018-05-14: 63038317672 (amd64/Linux) D4659: strictness to fix space leaks - - ,(platform('i386-unknown-mingw32'), 367546388, 10) - # 2012-10-30: 13773051312 (x86/Windows) - # 2013-02-10: 14925262356 (x86/Windows) - # 2013-11-13: 14328363592 (x86/Windows, 64bit machine) - # 2014-12-01: 104140852 (x86/Windows, sudden shrinkage!) - # 2014-12-10: 217933548 increased again - # 2017-04-02: 367546388 update - - ,(wordsize(32), 3775852520, 5)]) - # 2012-08-14: 13471797488 (x86/OSX) - # 2014-01-22: 14581475024 (x86/Linux - new haddock) - # 2014-06-29: 15110426000 (x86/Linux) - # 2016-04-06: 16222702892 (x86/Linux) - # 2017-03-24: 3775852520 (x86/Linux) + ,collect_stats('bytes allocated',10) ], stats, ['haddock.t']) diff --git a/testsuite/tests/perf/join_points/all.T b/testsuite/tests/perf/join_points/all.T index fe202b6487..eedf0c0bff 100644 --- a/testsuite/tests/perf/join_points/all.T +++ b/testsuite/tests/perf/join_points/all.T @@ -7,17 +7,15 @@ setTestOpts(f) test('join001', normal, compile, ['']) test('join002', - [stats_num_field('bytes allocated', [(wordsize(64), 2000290792, 5)])], + [collect_stats('bytes allocated',5),], compile_and_run, ['']) test('join003', - [stats_num_field('bytes allocated', [(wordsize(64), 2000290792, 5)])], + [collect_stats('bytes allocated',5),], compile_and_run, ['']) test('join004', - [stats_num_field('bytes allocated', [(wordsize(64), 16130592, 5)])], - # 2017-01-24 48146720 Join point rework - # 2017-02-05 16130592 Do Worker/Wrapper for NOINLINE things + [collect_stats('bytes allocated',5),], compile_and_run, ['']) @@ -25,11 +23,7 @@ test('join005', normal, compile, ['']) test('join006', normal, compile, ['']) test('join007', - [stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 47368, 5), - # 2017-02-19 47368 (x64/Windows) - Unknown - - (wordsize(64), 50944, 5)])], - # Initial 50944 + [collect_stats('bytes allocated',5),], compile_and_run, ['']) + diff --git a/testsuite/tests/perf/should_run/all.T b/testsuite/tests/perf/should_run/all.T index 6a7bcf0040..b6763482ee 100644 --- a/testsuite/tests/perf/should_run/all.T +++ b/testsuite/tests/perf/should_run/all.T @@ -3,16 +3,14 @@ # See Note [Solving from instances when interacting Dicts] test('T5835', - [stats_num_field('max_bytes_used', - [(wordsize(64), 44312, 10)]), + [collect_stats('max_bytes_used',10), only_ways(['normal']) ], compile_and_run, ['-O']) test('T12791', - [stats_num_field('max_bytes_used', - [(wordsize(64), 44312, 10)]), + [collect_stats('max_bytes_used',10), only_ways(['normal']) ], compile_and_run, @@ -21,20 +19,14 @@ test('T12791', # Tests that newArray/newArray_ is being optimised correctly test('T10359', - [stats_num_field('bytes allocated', - [(wordsize(64), 450920, 5), - # previously 499512 (amd64/Linux) - # 2017-03-10 450920 (amd64/Linux) Don't generate wrapper for !Int# - (wordsize(32), 351508, 5)]), + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O']) test('T14955', - [stats_num_field('bytes allocated', - [(wordsize(64), 48050760, 5), - (wordsize(32), 351508, 5)]), + [collect_stats('bytes allocated',5), only_ways(['normal']) ], multimod_compile_and_run, @@ -43,11 +35,8 @@ test('T14955', # fortunately the values here are mostly independent of the wordsize, # because the test allocates an unboxed array of doubles. test('T3586', - [stats_num_field('peak_megabytes_allocated', (17, 1)), - # expected value: 17 (amd64/Linux) - stats_num_field('bytes allocated', (16102024, 5)), - # prev: 16835544 (amd64/Linux) - # 2014-07-17: 16102024 (amd64/Linux), general round of updates + [collect_stats('peak_megabytes_allocated',1), + collect_stats('bytes allocated', 5), only_ways(['normal']), # Use `+RTS -G1` for more stable residency measurements. Note [residency]. @@ -58,17 +47,7 @@ test('T3586', ['-O']) test('T4830', - [stats_num_field('bytes allocated', - [(wordsize(64), 98248, 4), - # 127000 (amd64/Linux) - # 2013-02-07: 99264 (amd64/Linux) - # 2014-01-13: 98248 (amd64/Linux) due to #8647 - # 2015-04-03: Widen 1->4% (amd64/Windows was doing better) - (wordsize(32), 70646, 3)]), - # 2013-02-10: 69744 (x86/Windows) - # 2013-02-10: 71548 (x86/OSX) - # 2014-01-28: Widen range 2->3 - # (x86/Windows - actual 69000, lower was 69233) + [collect_stats('bytes allocated',4), only_ways(['normal']) ], compile_and_run, @@ -82,27 +61,8 @@ test('T3245', [when(doing_ghci(), extra_hc_opts('-fobject-code'))], # test('lazy-bs-alloc', [extra_files(['../../numeric/should_run/arith011.stdout']), - stats_num_field('peak_megabytes_allocated', (2, 1)), - # expected value: 2 (amd64/Linux) - stats_num_field('bytes allocated', - [(wordsize(64), 421792, 5), - # 489776 (amd64/Linux) - # 2013-02-07: 429744 (amd64/Linux) - # 2013-12-12: 425400 (amd64/Linux) - # 2015-04-04: Widen 1->3% (amd64/Windows was failing) - # 2015-08-15: 431500 (Windows not good enough. avg of Windows&Linux) - # 2015-12-15: 444720 (amd64/Linux, D1616) - # 2015-12-17: 444720 (widen 3->5%, Windows is at 462688) - # 2017-01-30: 421792 (amd64/Linux, strangely Type-indexed Typeable) - (wordsize(32), 410040, 5)]), - # 2013-02-10: 421296 (x86/Windows) - # 2013-02-10: 414180 (x86/OSX) - # 2014-01-22: 411500 (x86/Linux) - # 2014-01-28: Widen 1->2% (x86/Windows was at 425212) - # 2016-04-06: 429760 (x86/Linux) no idea what happened - # 2017-02-14: 421448 Early inline patch - # 2017-03-24: 410040 It's not entirely clear, widen threshold to match 64-bit case - + collect_stats('peak_megabytes_allocated', 1), + collect_stats('bytes allocated',5), only_ways(['normal']), extra_run_opts('arith011.stdout'), ignore_stdout, @@ -116,25 +76,7 @@ test('lazy-bs-alloc', ['-O']) test('T876', - [stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 53472, 5), - # 2015-04-03: 71904 (amd64/Windows, unknown cause) - # 2016-11-27: 66928 (amd64/Windows, unknown cause) - # 2017-12-24: 53472 (amd64/Windows, unknown cause) - - (wordsize(64), 58128, 5), - # 2013-02-14: 1263712 (x86_64/Linux) - # 2014-02-10: 63216 (x86_64/Linux), call arity analysis - # 2016-11-11: 58128 (x86_64/Linux), it's not clear - - (wordsize(32), 50408, 5) ]), - # some date: 663712 (Windows, 64-bit machine) - # 2014-04-04: 56820 (Windows, 64-bit machine) - # 2014-06-29: 53024 (x86_64/Linux) - # 2014-12-01: 56796 (Windows) - # 2015-07-11: 53156 (x86_64/Linux) - # 2017-03-24: 50408 (x86/Linux, 64-bit machine) - + [collect_stats('bytes allocated',5), only_ways(['normal']), extra_run_opts('10000') ], @@ -154,34 +96,16 @@ test('T4321', test('T3736', [], run_command, ['$MAKE -s --no-print-directory T3736']) test('T3738', [extra_clean(['T3738a.hi', 'T3738a.o']), - stats_num_field('peak_megabytes_allocated', (2, 0)), - # expected value: 1 (amd64/Linux) - # 2016-08-31: 2 (allocation area size bumped to 1MB) - stats_num_field('bytes allocated', - [(wordsize(32), 45648, 5), - # expected value: 50520 (x86/Linux) - (wordsize(64), 50592, 8)]), - # prev: 49400 (amd64/Linux) - # 2014-07-17: 50520 (amd64/Linux) general round of updates - # 2014-09-10: 50592 (amd64/Linux) post-AMP-update - # 2015-04-03: Widen 5->8% (amd64/Windows was doing better) + collect_stats('peak_megabytes_allocated', 0), + collect_stats('bytes allocated',8), only_ways(['normal']) ], compile_and_run, ['-O']) test('MethSharing', - [stats_num_field('peak_megabytes_allocated', (2, 0)), - # expected value: 1 (amd64/Linux) - # 2016-08-31: 2 (allocation area size bumped to 1MB) - stats_num_field('bytes allocated', - [(wordsize(32), 240071008, 5), - # expected value: 2685858140 (x86/OS X) - # expected: 360940756 (x86/Linux) - # 2017-03-24: 240071008 (x86/Linux, 64-bit machine) - (wordsize(64), 480098192, 5)]), - # expected: 640067672 (amd64/Linux) - # 2017-01-31: 480098192 work/wrap noinline things + [collect_stats('peak_megabytes_allocated', 0), + collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, @@ -197,9 +121,7 @@ test('T149', ['$MAKE -s --no-print-directory T149']) test('T5113', - [stats_num_field('bytes allocated', - [(wordsize(32), 4000000, 5), - (wordsize(64), 8000000, 5)]), + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, @@ -207,103 +129,54 @@ test('T5113', test('T4978', - [stats_num_field('bytes allocated', - [(wordsize(32), 10000000, 5), - (wordsize(64), 10137680, 5)]), - # expected value: 10137680 (amd64/Linux) + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O2']) test('T5205', - [stats_num_field('bytes allocated', - [(wordsize(32), 49460, 5), - # expected value: 47088 (x86/Darwin) - # 2017-03-24: 49460 (x86/Linux, 64-bit machine) - - (platform('x86_64-unknown-mingw32'), 52264, 5), - # 2016-12-14: 52264 (Separate out Windows results) - - (wordsize(64), 56208, 5)]), - # expected value: 51320 (amd64/Linux) - # 2014-07-17: 52600 (amd64/Linux) general round of updates - # 2015-04-03: Widen 5->7% (amd64/Windows was doing better) - # 2015-08-15: 50648 (Windows too good. avg of Windows&Linux) - # 2015-10-30: 56208 (D757: Emit Typeable at definition site) - # 2016-12-14: Narrow 7->5% (Separate out Windows results) + [collect_stats('bytes allocated',5), only_ways(['normal', 'optasm']) ], compile_and_run, ['']) test('T5549', - [stats_num_field('bytes allocated', - [(wordsize(32), 2896607976, 5), - # expected value: 3362958676 (Windows) - # 2014-12-01: 4096606332 (Windows) integer-gmp2 - # 2017-03-24: 2896607976 (x86/Linux, 64-bit machine) - - (wordsize(64), 5793140200, 5)]), - # expected value: 6725846120 (amd64/Linux) - # 8193140752 (amd64/Linux) integer-gmp2 - # 5793140200 (amd64/Linux) integer-gmp2 + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O']) test('T4474a', - [stats_num_field('bytes allocated', - [(wordsize(32), 2405242767, 5), - (wordsize(64), 4831890304, 5)]), - # expected value: 4831890304 (amd64/OSX) + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O']) test('T4474b', - [stats_num_field('bytes allocated', - [(wordsize(32), 2405242767, 5), - (wordsize(64), 4831890304, 5)]), - # expected value: 4831890304 (amd64/OSX) + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O']) test('T4474c', - [stats_num_field('bytes allocated', - [(wordsize(32), 2405242767, 5), - (wordsize(64), 4831890304, 5)]), - # expected value: 4831890304 (amd64/OSX) + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O']) test('T5237', - [stats_num_field('bytes allocated', - [(platform('i386-unknown-mingw32'), 73280, 5), - (wordsize(32), 78328, 5), - # expected value: 78328 (i386/Linux) - (wordsize(64), 104176, 5)]), - # expected value: 110888 (amd64/Linux) - # expected value: 104176 (amd64/Linux) + [collect_stats('bytes allocated',5), only_ways(['normal']) ], compile_and_run, ['-O ' + sse2_opts]) test('T5536', - [stats_num_field('bytes allocated', - [(wordsize(32), 446260520, 1), - # 1246287228 (i386/Linux) - # 446328556 (i386/Windows) - # 446192484 (i386/OSX) - (wordsize(64), 892399040, 5)]), - # expected value: 2492589480 (amd64/Linux) - # 17/1/13: 892399040 (x86_64/Linux) - # (new demand analyser) + [collect_stats('bytes allocated',1), extra_clean(['T5536.data']), ignore_stdout, only_ways(['normal']) @@ -312,37 +185,14 @@ test('T5536', ['-O']) test('T7257', - [stats_num_field('bytes allocated', - [(wordsize(32), 869850704, 10), - # expected value: 1246287228 (i386/Linux) - # 2016-04-06: 989850664 (i386/Linux) no idea what happened - # 2017-03-25: 869850704 (x86/Linux, 64-bit machine) probably sizeExpr fix - (wordsize(64), 1297293264, 5)]), - # 2012-09-21: 1774893760 (amd64/Linux) - # 2015-11-03: 1654893248 (amd64/Linux) - # 2016-06-22: 1414893248 (amd64/Linux, sizeExpr fix) - # 2018-06-22: 1297293264 (amd64/Linux, atomicModifyMutVar# replacement) - stats_num_field('peak_megabytes_allocated', - [(wordsize(32), 217, 5), - # 2012-10-08: 217 (x86/Linux) - (wordsize(64), 227, 5)]), - # 2012-09-21: 227 (amd64/Linux) - + [collect_stats('bytes allocated',10), + collect_stats('peak_megabytes_allocated',5), only_ways(['normal']) ], compile_and_run, ['-O']) test('Conversions', - [stats_num_field('bytes allocated', - [(wordsize(32), 76768, 3), - # 2012-12-18: 55316 Guessed 64-bit value / 2 - # 2013-02-10: 77472 (x86/OSX) - # 2013-02-10: 79276 (x86/Windows) - # 2014-01-13: 76768 (x86/Linux) due to #8647 - (wordsize(64), 107544, 5)]), - # 2012-12-18: 109608 (amd64/OS X) - # 2014-07-17: 107544 (amd64/Linux) - + [collect_stats('bytes allocated',3), only_ways(['normal']) ], compile_and_run, ['-O -msse2']) @@ -351,29 +201,14 @@ test('T7507', omit_ways(['ghci']), compile_and_run, ['-O']) # For 7507, stack overflow is the bad case test('T7436', - [stats_num_field('max_bytes_used', - [(wordsize(64), 60360, 4), - # 127000 (amd64/Linux) - # 2013-02-07: 60360 (amd64/Linux) - # 2015-04-03: Widen 1->4% (amd64/Windows was doing better) - (wordsize(32), 42772, 4)]), - # 2013-02-10: 58032 (x86/Windows) - # 2013-02-10: 58836 (x86/OSX) - # 2017-03-24: 42772 (x86/Linux, 64-bit machine) no idea why - # 2017-04-02: Widen 1->4% (i386/Windows was doing better) + [collect_stats('max_bytes_used',4), only_ways(['normal']) ], compile_and_run, ['-O']) test('T7797', - [stats_num_field('bytes allocated', - [(wordsize(32), 240044984, 5), - # expected value: 2685858140 (x86/OS X) - # expected: 360940756 (x86/Linux) - # expected: 240044984 (x86/Windows, 64bit machine) - (wordsize(64), 480050944, 5)]), - # expected: 480050944 (amd64/Linux) + [collect_stats('bytes allocated',5), extra_clean(['T7797a.hi', 'T7797a.o']), only_ways(['normal']) ], @@ -381,114 +216,62 @@ test('T7797', ['-O']) test('T7954', - [stats_num_field('bytes allocated', - [(wordsize(32), 920045264, 10), - # some date: 1380051408 (64-bit Windows machine) - # 2014-04-04: 920045264 (64-bit Windows machine) - (wordsize(64), 1280051632, 10)]), - # 2014-02-10: 1680051336 (x86_64/Linux), call arity analysis - # 2018-05-03: 1280051632 (x86_64/Linux), refactor numericEnumFrom + [collect_stats('bytes allocated',10), only_ways(['normal']) ], compile_and_run, ['-O']) test('T7850', - [stats_num_field('peak_megabytes_allocated', - [(wordsize(32), 2, 10), - (wordsize(64), 4, 10)]), + [collect_stats('peak_megabytes_allocated',10), only_ways(['normal'])], compile_and_run, ['-O']) test('T5949', - [stats_num_field('bytes allocated', - [ (wordsize(32), 116020, 10), - (wordsize(64), 201008, 10)]), - # previously, it was >400000 bytes + [collect_stats('bytes allocated',10), only_ways(['normal'])], compile_and_run, ['-O']) test('T4267', - [stats_num_field('bytes allocated', - [ (wordsize(32), 36012, 10) - # 32-bit value close to 64 bit; c.f. T7619 - , (wordsize(64), 40992, 10) ]), - # previously, it was >170000 bytes - # 2014-01-17: 130000 - # 2014-02-10: 40992 (x86_64/Linux), call arity analysis + [collect_stats('bytes allocated',10), only_ways(['normal'])], - compile_and_run, - ['-O']) + compile_and_run, + ['-O']) test('T7619', - [stats_num_field('bytes allocated', - [ (wordsize(32), 36012, 10) - # 32-bit close to 64-bit value; most of this very - # small number is standard start-up boilerplate I think - , (wordsize(64), 40992, 10) ]), - # previously, it was >400000 bytes + [collect_stats('bytes allocated',10), only_ways(['normal'])], compile_and_run, ['-O']) test('InlineArrayAlloc', - [stats_num_field('bytes allocated', - [ (wordsize(32), 800040960, 5) - , (wordsize(64), 1600040960, 5) ]), + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2']) test('InlineByteArrayAlloc', - [stats_num_field('bytes allocated', - [ (wordsize(32), 1360036012, 5) - , (wordsize(64), 1440040960, 5) ]), - # 32 and 64 bit not so different, because - # we are allocating *byte* arrays + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2']) test('InlineCloneArrayAlloc', - [stats_num_field('bytes allocated', - [ (wordsize(32), 800041120, 5) - , (wordsize(64), 1600041120, 5) ]), + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2']) test('T9203', - [stats_num_field('bytes allocated', - [ (wordsize(32), 77969268, 5) - # was - # 2016-04-06 84345136 (i386/Debian) not sure - # 2017-03-24 77969268 (x86/Linux, 64-bit machine) probably join points - - , (wordsize(64), 98360576, 5) ]), - # was 95747304 - # 2019-09-10 94547280 post-AMP cleanup - # 2015-10-28 95451192 emit Typeable at definition site - # 2016-12-19 84620888 Join points - # 2018-07-30 98360576 it's unclear + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2']) test('T9339', - [stats_num_field('bytes allocated', - [ (wordsize(32), 46904, 5) - # is this number correct? Seems very high. - # 2017-03-24: 46904 (x86/Linux, 64-bit machine) who knows - - , (platform('x86_64-unknown-mingw32'), 47088, 7) - # 2017-02-19 47088 (x64/Windows) - Unknown - - , (wordsize(64), 50728, 5) ]), - # w/o fusing last: 320005080 - # 2014-07-22: 80050760 - # 2016-08-17: 50728 Join points (#12988) + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2 -fspec-constr-keen']) @@ -496,57 +279,38 @@ test('T9339', test('T8472', - [stats_num_field('bytes allocated', - [ (wordsize(32), 50000, 80) - , (wordsize(64), 51424, 80) ]), + [collect_stats('bytes allocated',80), only_ways(['normal'])], compile_and_run, ['-O2']) test('T12996', - [stats_num_field('bytes allocated', - [ (wordsize(64), 76776, 5) ]), + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2']) test('T13001', - [stats_num_field('bytes allocated', - [ (wordsize(32), 46728, 20) - , (wordsize(64), 50600, 20) ]), + [collect_stats('bytes allocated',20), only_ways(['normal'])], compile_and_run, ['-O2']) test('T12990', - [stats_num_field('bytes allocated', - [ (wordsize(64), 20040936, 5) ]), - # 2017-01-03 34440936 w/o inlining unsaturated - # constructor wrappers - # 2017-01-03 21640904 inline wrappers - # 2017-01-31 20040936 work/wrap noinline things + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O2']) test('T13218', - [stats_num_field('bytes allocated', - [ (wordsize(64), 82040056, 5) ]), - # 8.1 with default <$ 163644216 - # 8.1 with derived <$ 82040056 - stats_num_field('max_bytes_used', - [ (wordsize(64), 359128, 10) ]), - # 8.1 with default <$ 64408248 - # 8.1 with derived <$ 359128 + [collect_stats('bytes allocated',5), + collect_stats('max_bytes_used',10), only_ways(['normal'])], compile_and_run, ['-O']) test('DeriveNull', - [stats_num_field('bytes allocated', - [ (wordsize(64), 112050856, 5) ]), - # 2017-04-01 152083704 w/o derived null - # 2017-04-02 112050856 derive null + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O']) @@ -554,53 +318,35 @@ test('DeriveNull', test('DeriveNullTermination', normal, compile_and_run, ['']) test('T13623', - [stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 47232, 10), - # 2017-12-24 47232 unknown - (wordsize(64), 50936, 5)]), - # 2017-05-02 50936 initial + [collect_stats('bytes allocated',10), only_ways(['normal'])], compile_and_run, ['-O2']) test('T14052', - [compiler_stats_num_field('bytes allocated', - [ (wordsize(64), 2346183840, 15) ])], + [collect_compiler_stats('bytes allocated',15)], ghci_script, ['T14052.script']) test('T14936', - [stats_num_field('bytes allocated', - [(platform('x86_64-unknown-mingw32'), 47536, 10), - # 2018-05-04 47536 unknown - (wordsize(64), 51792, 5) ])], + [collect_stats('bytes allocated',10)], compile_and_run, ['-O2']) test('T15226', - [stats_num_field('bytes allocated', - [ (wordsize(64), 41040, 5) ]), - # 2018-06-06 41040 Let the simplifier know the result - # of seq# is in WHNF - # initial 400041040 + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O']) test('T15226a', - [stats_num_field('bytes allocated', - [ (wordsize(64), 41040, 5) ]), - # 2018-06-06 41040 Look through casts for seq# - # initial 400041040 + [collect_stats('bytes allocated',5), only_ways(['normal'])], compile_and_run, ['-O']) test('T15426', - [stats_num_field('bytes allocated', - [ (wordsize(64), 41272, 20) ]), - # 2018-08-10 41272 Change findIndices from INLINE to INLINABLE - # initial 160041176 - only_ways(['normal'])], + [collect_stats('bytes allocated', 20), + only_ways(['normal'])], compile_and_run, ['-O2']) diff --git a/testsuite/tests/perf/space_leaks/all.T b/testsuite/tests/perf/space_leaks/all.T index a23796d532..1f69d12112 100644 --- a/testsuite/tests/perf/space_leaks/all.T +++ b/testsuite/tests/perf/space_leaks/all.T @@ -1,36 +1,10 @@ test('space_leak_001', - # Before trac #2747 was fixed this was 565. - # Now it's: 3 (amd64/Linux) - # 4 (x86/OS X) - # 5 (x86/Linux) - [stats_num_field('peak_megabytes_allocated', (3, 1)), - # 3 (amd64/Linux, integer-gmp2) - stats_num_field('max_bytes_used', - [(wordsize(64), 440000, 15), - # 440224 (amd64/Linux) - # 417016 (x86/OS X) - # 415672 (x86/Windows) - # 481456 (unreg amd64/Linux) - (wordsize(32), 428220, 10)]), - # 2013-02-10 372072 (x86/OSX) - # 2013-02-10 439228 (x86/OSX) - # 2016-04-06 361400 (x86/Linux) - # 2017-03-24 428220 (x86/Linux, 64-bit machine) - - stats_num_field('bytes allocated', - [ (wordsize(64), 11315747416, 5), - # expected value: 9079316016 (amd64/Linux) - # 9331570416 (x86/Linux) - # 9329073952 (x86/OS X) - # 9327959840 (x86/Windows) - # 11315747416 (amd64/Lnx, integer-gmp2) - - (wordsize(32), 661907800, 5), - # 2014-12-01 13550759068 (Windows) - # 2017-03-24 661907800 (x86/Linux, 64-bit machine) No idea - - ]), + # This could potentially be replaced with + # collect_stats('all',5) to test all 3 with + # 5% possible deviation. + [collect_stats(['peak_megabytes_allocated','bytes allocated'],5), + collect_stats('max_bytes_used',15), omit_ways(['profasm','profthreaded','threaded1','threaded2']) ], compile_and_run, @@ -39,18 +13,14 @@ test('space_leak_001', test('T4334', # Test for a space leak in Data.List.lines (fixed with #4334) [extra_run_opts('1000000 2 t'), - stats_num_field('peak_megabytes_allocated', (2, 1)), + collect_stats('peak_megabytes_allocated',2), # prof ways don't work well with +RTS -V0 omit_ways(['profasm','profthreaded']) ], compile_and_run, ['']) test('T2762', - [stats_num_field('peak_megabytes_allocated', (2, 0)), - # peak_megabytes_allocated is 2 with 7.0.2. - # Was 57 with 6.12.3. - # 2016-08-31: 3 (allocation area size bumped to 1MB) - # 2017-02-22: 2 (refactor fiBind) + [collect_stats('peak_megabytes_allocated',2), only_ways(['normal']), extra_run_opts('+RTS -G1 -RTS' ), extra_clean(['T2762A.hi', 'T2762A.o'])], @@ -61,36 +31,9 @@ test('T4018', compile_and_run, ['-fno-state-hack']) test('T4029', - [stats_num_field('peak_megabytes_allocated', - [(wordsize(64), 65, 10)]), - # 2016-02-26: 66 (amd64/Linux) INITIAL - # 2016-05-23: 82 (amd64/Linux) Use -G1 - # 2016-07-13: 92 (amd64/Linux) Changes to tidyType - # 2016-09-01: 71 (amd64/Linux) Restore w/w limit (#11565) - # 2017-02-12: 80 (amd64/Linux) Type-indexed Typeable - # 2017-02-20: 76 (amd64/Linux) Better reading of iface files - # 2017-03-03: 65 (amd64/Linux) Share Typeable KindReps or more - # lazy interface file reading - stats_num_field('max_bytes_used', - [(wordsize(64), 18208944, 15)]), - # 2016-02-26: 24071720 (amd64/Linux) INITIAL - # 2016-04-21: 25542832 (amd64/Linux) - # 2016-05-23: 25247216 (amd64/Linux) Use -G1 - # 2016-07-13: 27575416 (amd64/Linux) Changes to tidyType - # 2016-07-20: 22920616 (amd64/Linux) Fix laziness of instance matching - # 2016-09-01: 21648488 (amd64/Linux) Restore w/w limit (#11565) - # 2016-10-13: 20325248 (amd64/Linux) Creep (downwards, yay!) - # 2016-11-14: 21387048 (amd64/Linux) Creep back upwards :( - # 2017-01-18: 21670448 (amd64/Linux) Float string literals to toplevel - # 2017-02-07: 22770352 (amd64/Linux) It is unclear - # 2017-02-12: 24151096 (amd64/Linux) Type-indexed Typeable - # 2017-02-20: 22016200 (amd64/Linux) Better reading of iface files - # 2017-03-03: 19172360 (amd64/Linux) Share Typeable KindReps or more - # lazy interface file reading - # 2017-03-07: 20476360 (amd64/Linux) It's not entirely clear - # 2017-03-14: 18208944 (amd64/Darwin) Again, not clear - # 2017-03-15: bumped margin to 15% due to instability + [collect_stats(['peak_megabytes_allocated','max_bytes_used'],10), extra_hc_opts('+RTS -G1 -RTS' ), ], ghci_script, ['T4029.script']) + diff --git a/testsuite/tests/pmcheck/should_compile/all.T b/testsuite/tests/pmcheck/should_compile/all.T index acb2b7ff74..84892a994f 100644 --- a/testsuite/tests/pmcheck/should_compile/all.T +++ b/testsuite/tests/pmcheck/should_compile/all.T @@ -36,26 +36,19 @@ test('T9951b', [], compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns']) test('T9951', [], compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns']) -test('T11303', normal, compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) -test('T11276', compiler_stats_num_field('bytes allocated', - [(wordsize(64), 165890392, 10)] - # 2018-07-14: 165890392 INITIAL - ), compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) +test('T11303', normal, compile, + ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) +test('T11276', collect_compiler_stats('bytes allocated',10), compile, + ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) -test('T11303b', compiler_stats_num_field('bytes allocated', - [(wordsize(64), 54373936, 10)] - # 2018-07-14: 54373936 INITIAL - ), compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) +test('T11303b', collect_compiler_stats('bytes allocated',10), compile, + ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) -test('T11374', compiler_stats_num_field('bytes allocated', - [(wordsize(64), 280144864, 10)] - # 2018-07-14: 280144864 INITIAL - ), compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) +test('T11374', collect_compiler_stats('bytes allocated',10), compile, + ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M1G -RTS']) -test('T11195', compiler_stats_num_field('bytes allocated', - [(wordsize(64), 7852567480, 10)] - # 2018-07-14: 7852567480 INITIAL - ), compile, ['-package ghc -fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M2G -RTS']) +test('T11195', collect_compiler_stats('bytes allocated',10), compile, + ['-package ghc -fwarn-incomplete-patterns -fwarn-overlapping-patterns +RTS -M2G -RTS']) test('T11984', normal, compile, ['-fwarn-incomplete-patterns -fwarn-overlapping-patterns']) diff --git a/testsuite/tests/primops/should_run/all.T b/testsuite/tests/primops/should_run/all.T index 742206d93d..ca3fa2a411 100644 --- a/testsuite/tests/primops/should_run/all.T +++ b/testsuite/tests/primops/should_run/all.T @@ -7,11 +7,7 @@ test('T4442', compile_and_run, ['']) test('T10481', exit_code(1), compile_and_run, ['']) test('T10678', - [stats_num_field('bytes allocated', - [(wordsize(64), 64004171, 5) - # 2015-11-04: 88041768 +/- 5% (before runRW#) - # 2015-11-04: 64004171 (after runRW#) - ]), + [ collect_stats('bytes allocated',5), only_ways('normal') ], compile_and_run, ['-O']) diff --git a/testsuite/tests/simplCore/should_compile/all.T b/testsuite/tests/simplCore/should_compile/all.T index 188f6432fa..2ccb2a7261 100644 --- a/testsuite/tests/simplCore/should_compile/all.T +++ b/testsuite/tests/simplCore/should_compile/all.T @@ -151,8 +151,7 @@ test('T7702', # we say 18mb peak allocated +/- 70% because other compiler flags have # a large effect on allocation which is hard to separate from the # allocation done by the plugin... but a regression allocates > 90mb - compiler_stats_num_field('peak_megabytes_allocated', - [(wordsize(32), 18, 70), (wordsize(64), 18, 70)]) + collect_compiler_stats('peak_megabytes_allocated',70), ], compile, ['-v0 -package-db T7702plugin/pkg.T7702/local.package.conf -fplugin T7702Plugin -package T7702plugin ' + config.plugin_way_flags]) diff --git a/testsuite/tests/simplStg/should_run/all.T b/testsuite/tests/simplStg/should_run/all.T index d3aa9376ee..2f7c69f5db 100644 --- a/testsuite/tests/simplStg/should_run/all.T +++ b/testsuite/tests/simplStg/should_run/all.T @@ -13,10 +13,9 @@ test('T9291', normal, compile_and_run, ['']) test('T13536', normal, compile_and_run, ['']) test('T13536a', - [stats_num_field('bytes allocated', - [ (wordsize(64), 86664, 5) ]), - # 2017-04-10 86664 -- 25769889696 if broken + [ collect_stats('bytes allocated',5), only_ways(['optasm'])], compile_and_run, ['']) + |