
#8173: GHC uses nub -------------------------------------+------------------------------------- Reporter: nh2 | Owner: leroux Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: Compile-time | Difficulty: Moderate (less performance bug | than a day) Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------- Comment (by leroux): Patch: attachment:ordNub-analysis (just an initial point to start at) Based on nofib-analyse attachment:ordNub-analysis​, it seems that it may be a good idea to selectively replace `nub`'s where it is applied over larger lists so that it cuts down on overhead. Snippet from nofib-analysis {{{ -------------------------------------------------------------------------------- Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- anna +0.0% +0.0% 0.11 0.12 +0.0% ansi +0.0% +0.0% 0.00 0.00 +0.0% atom +0.0% +0.0% -0.9% -0.4% +0.0% awards +0.0% +0.0% 0.00 0.00 +0.0% banner +0.0% +0.0% 0.00 0.00 +0.0% bernouilli +0.0% +0.0% 0.17 0.18 +0.0% binary-trees +0.0% +0.0% -7.3% -8.8% +0.0% boyer +0.0% +0.0% 0.04 0.05 +0.0% boyer2 +0.0% +0.0% 0.00 0.00 +0.0% bspt -0.1% +0.0% 0.00 0.01 +0.0% cacheprof +0.1% +0.0% -3.2% -2.1% +0.9% calendar +0.0% +0.0% 0.00 0.00 +0.0% cichelli +0.0% +0.0% 0.08 0.09 +0.0% circsim +0.0% +0.0% +6.0% +6.1% +0.0% clausify +0.0% +0.0% 0.04 0.05 +0.0% comp_lab_zift +0.0% +0.0% 0.20 +5.0% +0.0% compress +0.0% +0.0% 0.17 0.18 +0.0% compress2 +0.0% +0.0% 0.16 0.17 +0.0% constraints +0.0% +0.0% +1.7% +2.0% +0.0% cryptarithm1 +0.0% +0.0% -2.5% -2.4% +0.0% cryptarithm2 +0.0% +0.0% 0.01 0.01 +0.0% cse +0.0% +0.0% 0.00 0.00 +0.0% eliza +0.0% +0.0% 0.00 0.00 +0.0% event +0.0% +0.0% 0.14 0.15 +0.0% exp3_8 -0.1% +0.0% +1.9% +1.8% +0.0% expert +0.0% +0.0% 0.00 0.00 +0.0% fannkuch-redux -0.1% +0.0% +0.9% +1.0% +0.0% fasta -0.1% +0.0% +2.7% +4.5% +0.0% fem +0.0% +0.0% 0.02 0.03 +0.0% fft -0.1% +0.0% 0.03 0.04 +0.0% fft2 +0.0% +0.0% 0.05 0.05 +0.0% fibheaps +0.1% +0.0% 0.03 0.03 +0.0% fish +0.0% +0.0% 0.01 0.02 +0.0% fluid +0.0% +0.0% 0.01 0.01 +0.0% fulsom +0.1% +0.0% +1.3% +3.2% -1.3% gamteb +0.0% +0.0% 0.05 0.05 +0.0% gcd +0.0% +0.0% 0.03 0.03 +0.0% gen_regexps +0.0% +0.0% 0.00 0.00 +0.0% genfft -0.1% +0.0% 0.03 0.03 +0.0% gg +0.0% +0.0% 0.00 0.02 +0.0% grep +0.0% +0.0% 0.00 0.00 +0.0% hidden +0.0% +0.0% +2.5% +1.9% +0.0% hpg +0.0% +0.0% 0.10 +1.8% +0.0% ida +0.0% +0.0% 0.08 0.08 +0.0% infer +0.0% +0.0% 0.06 0.07 +0.0% integer +0.0% +0.0% +0.2% +0.0% +0.0% integrate +0.0% +0.0% 0.16 0.20 +0.0% k-nucleotide -0.1% +0.0% +3.3% +5.5% +0.0% kahan +0.0% +0.0% 0.17 0.17 +0.0% knights +0.0% +0.0% 0.00 0.01 +0.0% lcss +0.0% +0.0% -2.4% -2.2% +0.0% life +0.0% +0.0% -5.2% -8.5% +0.0% lift +0.0% +0.0% 0.00 0.00 +0.0% listcompr +0.0% +0.0% 0.07 0.08 +0.0% listcopy +0.0% +0.0% 0.07 0.09 +0.0% maillist +0.0% -0.0% 0.05 -8.1% +10.0% mandel +0.0% +0.0% 0.06 0.07 +0.0% mandel2 +0.0% +0.0% 0.00 0.00 +0.0% minimax +0.0% +0.0% 0.00 0.00 +0.0% mkhprog +0.0% +0.0% 0.00 0.00 +0.0% multiplier +0.0% +0.0% 0.11 0.12 +0.0% n-body +0.0% +0.0% +19.0% +22.2% +0.0% nucleic2 +0.0% +0.0% 0.06 0.07 +0.0% para +0.0% +0.0% -4.5% -3.1% +0.0% paraffins +0.0% +0.0% 0.11 0.12 +0.0% parser +0.0% +0.0% 0.03 0.03 +0.0% parstof +0.0% +0.0% 0.00 0.00 +0.0% pic +0.0% +0.0% 0.00 0.00 +0.0% pidigits +0.0% +0.0% +2.3% +1.7% +0.0% power +0.0% +0.0% +3.4% +4.2% +0.0% pretty +0.0% +0.0% 0.00 0.00 +0.0% primes +0.0% +0.0% 0.06 0.07 +0.0% primetest +0.0% +0.0% 0.11 0.11 +0.0% prolog +0.0% +0.0% 0.00 0.01 +0.0% puzzle +0.0% +0.0% 0.14 0.15 +0.0% queens +0.0% +0.0% 0.01 0.02 +0.0% reptile +0.0% +0.0% 0.00 0.01 +0.0% reverse-complem +0.0% +0.0% 0.10 0.17 +0.0% rewrite +0.0% +0.0% 0.01 0.02 +0.0% rfib +0.0% +0.0% 0.01 0.01 +0.0% rsa +0.1% +0.0% 0.02 0.03 +0.0% scc +0.0% +0.0% 0.00 0.00 +0.0% sched +0.0% +0.0% 0.01 0.02 +0.0% scs +0.0% +0.0% -25.4% -32.2% +0.0% simple +0.0% +0.0% +0.0% -0.7% +0.0% solid +0.0% +0.0% 0.16 0.16 +0.0% sorting +0.0% +0.0% 0.00 0.00 +0.0% spectral-norm +0.0% +0.0% -0.4% -0.1% +0.0% sphere +0.0% +0.0% 0.04 0.05 +0.0% symalg +0.0% +0.0% 0.01 0.01 +0.0% tak +0.0% +0.0% 0.01 0.01 +0.0% transform +0.0% +0.0% +2.5% +1.8% +0.0% treejoin +0.0% +0.0% 0.15 0.17 +0.0% typecheck +0.1% +0.0% +1.0% +1.9% +0.0% veritas +0.0% +0.0% 0.00 0.01 +0.0% wang +0.1% +0.0% 0.13 0.14 +0.0% wave4main +0.0% +0.0% +3.0% +7.3% +0.0% wheel-sieve1 +0.0% +0.0% -1.1% -1.6% +0.0% wheel-sieve2 +0.0% +0.0% 0.21 +5.6% +0.0% x2n1 -0.1% +0.0% 0.00 0.01 +0.0% -------------------------------------------------------------------------------- Min -0.1% -0.0% -25.4% -32.2% -1.3% Max +0.1% +0.0% +19.0% +22.2% +10.0% Geometric Mean -0.0% -0.0% -0.3% -0.1% +0.1% }}} There's more work to be done! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8173#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler