1. 11 Jan, 2019 1 commit
    • Sebastian Graf's avatar
      Stabilise gen_regexp again · e1b0cfad
      Sebastian Graf authored
      While investigating a 5% runtime regression, I realised that
      `gen_regexp` wasn't sufficiently stable wrt. GC parameterisations.
      This is now rectified by iterating 500 instead of 100 times.
  2. 08 Jan, 2019 1 commit
    • Sebastian Graf's avatar
      Stabilise benchmarks wrt. GC · 8632268a
      Sebastian Graf authored
      This is due to #15999, a follow-up on #5793 and #15357 and changes all
      benchmarks, some of them (i.e. `wheel-sieve1`, `awards`) rather drastically.
      The general plan is outlined in #15999: Identify GC-sensitive benchmarks by
      looking at how productivity rates change over different nursery sizes and
      iterate `main` of these benchmarks often enough for the non-monotony and
      discontinuities to go away.
      I was paying attention that the benchmarked logic is actually run $n times more
      often, rather than just benchmarking IO operations printing the result of CAFs.
      When I found benchmarks with insignificant runtime (#15357), I made sure that
      parameters/input files were adjusted so that runtime of the different modes
      fall within the ranges proposed in
      - fast: 0.1-0.2s
      - norm: 1-2s
      - slow: 5-10s
      This is what I did:
      - Stabilise bernoulli
      - Stabilise digits-of-e1
      - Stabilise digits-of-e2
      - Stabilise gen_regexp
      - Adjust running time of integrate
      - Adjust running time of kahan
      - Stabilise paraffins
      - Stabilise primes
      - Adjust running time of rfib
      - Adjust running time of tak
      - Stabilise wheel-sieve1
      - Stabilise wheel-sieve2
      - Adjust running time of x2n1
      - Adjust running time of ansi
      - Adjust running time of atom
      - Make awards benchmark something other than IO
      - Adjust running time of banner
      - Stabilise boyer
      - Adjust running time of boyer2
      - Adjust running time of queens
      - Adjust running time of calendar
      - Adjust runtime of cichelli
      - Stabilise circsim
      - Stabilise clausify
      - Stabilise constraints with moderate success
      - Adjust running time of cryptarithm1
      - Adjust running time of cryptarythm2
      - Adjust running time of cse
      - Adjust running time of eliza
      - Adjust running time of exact-reals
      - Adjust running time of expert
      - Stabilise fft2
      - Stabilise fibheaps
      - Stabilise fish
      - Adjust running time for gcd
      - Stabilise comp_lab_zift
      - Stabilise event
      - Stabilise fft
      - Stabilise genfft
      - Stabilise ida
      - Adjust running time for listcompr
      - Adjust running time for listcopy
      - Adjust running time of nucleic2
      - Attempt to stabilise parstof
      - Stabilise sched
      - Stabilise solid
      - Adjust running time of transform
      - Adjust running time of typecheck
      - Stabilise wang
      - Stabilise wave4main
      - Adjust running time of integer
      - Adjust running time of knights
      - Stabilise lambda
      - Stabilise lcss
      - Stabilise life
      - Stabilise mandel
      - Stabilise mandel2
      - Adjust running time of mate
      - Stabilise minimax
      - Adjust running time of multiplier
      - Adjust running time of para
      - Stabilise power
      - Adjust running time of primetest
      - Stabilise puzzle with mild success
      - Adjust running time for rewrite
      - Stabilise simple with mild success
      - Stabilise sorting
      - Stabilise sphere
      - Stabilise treejoin
      - Stabilise anna
      - Stabilise bspt
      - Stabilise cacheprof
      - Stablise compress
      - Stablise compress2
      - Stabilise fem
      - Adjust running time of fluid
      - Stabilise fulsom
      - Stabilise gamteb
      - Stabilise gg
      - Stabilise grep
      - Adjust running time of hidden
      - Stabilise hpg
      - Stabilise infer
      - Stabilise lift
      - Stabilise linear
      - Attempt to stabilise maillist
      - Stabilise mkhprog
      - Stabilise parser
      - Stabilise pic
      - Stabilise prolog
      - Attempt to stabilise reptile
      - Adjust running time of rsa
      - Adjust running time of scs
      - Stabilise symalg
      - Stabilise veritas
      - Stabilise binary-trees
      - Adjust running time of fasta
      - Adjust running time of k-nucleotide
      - Adjust running time of pidigits
      - Adjust running time of reverse-complement
      - Adjust running time of spectral-norm
      - Adjust running time of fannkuch-redux
      - Adjust running time for n-body
      Problematic benchmarks:
      - `last-piece`: Unclear how to stabilise. Runs for 300ms and I can't make up smaller inputs because I don't understand what it does.
      - `pretty`: It's just much too small to be relevant at all. Maybe we want to get rid of this one?
      - `scc`: Same as `pretty`. The input graph for which SCC analysis is done is much too small and I can't find good directed example graphs on the internet.
      - `secretary`: Apparently this needs `-package random` and consequently hasn't been run for a long time.
      - `simple`: Same as `last-piece`. Decent runtime (70ms), but it's unstable and I see no way to iterate it ~100 times in fast mode.
      - `eff`: Every benchmark is problematic here. Not from the point of view of allocations, but because the actual logic is vacuous. IMO, these should be performance tests, not actual benchmarks. Alternatively, write an actual application that makes use of algebraic effects.
      - `maillist`: Too trivial. It's just String/list manipulation, not representative of any Haskell code we would write today (no use of base library functions which could be fused, uses String instead of Text). It's only 75 loc according to `cloc`, that's not a `real` application.
      Reviewers: simonpj, simonmar, bgamari, AndreasK, osa1, alpmestan, O26 nofib
      GHC Trac Issues: #15999
      Differential Revision: https://phabricator.haskell.org/D5438
  3. 01 Jan, 2019 5 commits
  4. 30 Dec, 2018 1 commit
  5. 29 Dec, 2018 1 commit
  6. 26 Dec, 2018 1 commit
    • Sebastian Graf's avatar
      Compare results of compress by hashing · 042cf0be
      Sebastian Graf authored
      We don't want the result in the repo as it's a sizeable binary file that
      doesn't compress well.
      Storing the output file in the repository becomes infeasible for large
      inputs. There are two possible remedies:
      1. Generate the result files during `make boot` (Phab:D5426). We
         discovered some drawbacks (like missing dependency files to build
         `compress` during boot) to this approach which make it infeasible.
      2. Shrink the output files, for example by hashing the string that we would
         normally output and compare that instead.
      This patch implements the second alternative. This somewhat distorts the
      runtime profile, so we might want to consider doing hashing within the
      benchmark runner in the future.
      Test Plan: make boot
      Reviewers: AndreasK, nomeata, O26 nofib, osa1
      Reviewed By: AndreasK, osa1
      Subscribers: osa1
      Differential Revision: https://phabricator.haskell.org/D5469
  7. 22 Dec, 2018 1 commit
  8. 21 Dec, 2018 1 commit
    • Sebastian Graf's avatar
      Fix parsing of maximum residency in runstdtest · f3521319
      Sebastian Graf authored
      `runstdtest` switched from `-S` to `-s` output a while ago.
      That broke parsing of maximum and average residency numbers.
      This commit makes sure that at least maximum residency is parsed
      correctly from `-s` output, while leaving the logic for `-S` output.
      Reviewers: simonmar, bgamari, simonpj, osa1, AndreasK, O26 nofib
      Reviewed By: bgamari
      GHC Trac Issues: #16003
      Differential Revision: https://phabricator.haskell.org/D5418
  9. 22 Nov, 2018 2 commits
  10. 20 Nov, 2018 1 commit
  11. 14 Nov, 2018 1 commit
    • Andreas Klebinger's avatar
      Adjust normal runtimes for nofib along with related changes · 08cc9b6b
      Andreas Klebinger authored
      Runtime for nofib benchmarks was all over the place.
      This patch adjusts runtime for most benchmarks such
      that it falls into the 0.2-2s range.
      This means that:
      * A default run will take longer
      * Time spent will be better distributed among benchmarks.
      * More benchmarks have runtimes long enough to be used
        for runtime analysis.
      Some more changes were done which go hand in hand
      with changing runtimes.
      * Some benchmarks now create their input files during boot.
      * Moved input files for anna in their own directory.
      * Remove printing of output for some of the floating
        point heavy benchmarks.
      * Added a comment about desired runtimes to README.
      * Made grep actually benchmark something.
      * Throw cachgrind out of the default benchmarks.
        The nondeterministic behaviour has been an issue for a
        while and it doesn't seem like an essential benchmark.
      Test Plan: run nofib in modes slow/normal/fast
      Reviewers: O26 nofib, alpmestan
      Reviewed By: alpmestan
      Subscribers: sgraf, alpmestan
      Differential Revision: https://phabricator.haskell.org/D4989
  12. 27 Aug, 2018 1 commit
  13. 22 Aug, 2018 1 commit
  14. 20 Jun, 2018 1 commit
  15. 16 Jun, 2018 5 commits
  16. 04 May, 2018 1 commit
  17. 08 Feb, 2018 1 commit
    • Andreas Klebinger's avatar
      Recognize shells reporting as MINGW under windows. · 1364fe62
      Andreas Klebinger authored
      My msys instance at least reports MINGW instead of MSYS for uname.
      This commit adjusts the regex to match either one.
      Without this some errors occur because of missing .exe extensions in
      file names.
      This fixes #14654
      Test Plan: make
      Reviewers: O26 nofib, Phyx, bgamari
      Reviewed By: Phyx, bgamari
      Subscribers: bgamari, Phyx
      GHC Trac Issues: #14654
      Differential Revision: https://phabricator.haskell.org/D4297
  18. 17 Jan, 2018 1 commit
  19. 28 Dec, 2017 1 commit
  20. 23 Oct, 2017 2 commits
  21. 22 Oct, 2017 2 commits
  22. 14 Sep, 2017 1 commit
  23. 23 Aug, 2017 1 commit
  24. 22 Aug, 2017 3 commits
  25. 15 Aug, 2017 3 commits