Skip to content
This repository has been archived by the owner on Jan 2, 2021. It is now read-only.

Performance analysis over time #629

Merged
merged 15 commits into from
Jun 15, 2020
Merged

Conversation

pepeiborra
Copy link
Collaborator

This adds a new script benchHist to automate the running of ghcide-bench over multiple versions of the project, and produces .csv files and .svg graphs with the results. More details in the module header and the README.

By default running stack exec benchHist will produce an analysis comparing HEAD with upstream, assuming everything works. The analysis is configurable via a yaml file.

I have uploaded a sample output here: https://github.com/pepeiborra/ghcide/tree/bench-hist-dump/bench-hist

Some interesting results from the analysis:

  • Neil's Hashable PR really hit the leak right in the thunk:
    hashable-edit

  • Interface files did curb memory usage!
    interface-hover

  • But they also made some things twice as slow (and I have a PR coming):
    interface-hover-edit

@pepeiborra
Copy link
Collaborator Author

I forgot to mention that benchHist requires the changes in #625

@pepeiborra pepeiborra force-pushed the bench-hist branch 3 times, most recently from 4ef9f8f to 79f0a10 Compare June 13, 2020 10:50
Copy link
Collaborator

@cocreature cocreature left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thank you so much!

bench/Hist/Main.hs Show resolved Hide resolved
@cocreature cocreature merged commit 0e96f61 into haskell:master Jun 15, 2020
pepeiborra added a commit to pepeiborra/ide that referenced this pull request Dec 29, 2020
* benchmark history script

* if HEAD no need to rebuild worktree

* add bench/README.md

* Enable all experiments

* Fix dependency tracking for git branches

* hlints

* Add stack84 extra-deps

* Identify failed experiments in graphs

* Filter our failed benchmarks from aggregate graphs

Otherwise they tend to distort the axis

* Improve graphs (more and easier to see colors)

* update cradles

* customizable output folder

* Cache the config for the duration of the script

Otherwise the script is vulnerable to config edits

* Allow omitting the git: field

* Ignore bench-hist intermediate artifacts

Handy for including bench-hist results in a branch while avoiding the
intermediate artifacts
pepeiborra added a commit to pepeiborra/ide that referenced this pull request Dec 29, 2020
* benchmark history script

* if HEAD no need to rebuild worktree

* add bench/README.md

* Enable all experiments

* Fix dependency tracking for git branches

* hlints

* Add stack84 extra-deps

* Identify failed experiments in graphs

* Filter our failed benchmarks from aggregate graphs

Otherwise they tend to distort the axis

* Improve graphs (more and easier to see colors)

* update cradles

* customizable output folder

* Cache the config for the duration of the script

Otherwise the script is vulnerable to config edits

* Allow omitting the git: field

* Ignore bench-hist intermediate artifacts

Handy for including bench-hist results in a branch while avoiding the
intermediate artifacts
pepeiborra added a commit to pepeiborra/ide that referenced this pull request Dec 29, 2020
* benchmark history script

* if HEAD no need to rebuild worktree

* add bench/README.md

* Enable all experiments

* Fix dependency tracking for git branches

* hlints

* Add stack84 extra-deps

* Identify failed experiments in graphs

* Filter our failed benchmarks from aggregate graphs

Otherwise they tend to distort the axis

* Improve graphs (more and easier to see colors)

* update cradles

* customizable output folder

* Cache the config for the duration of the script

Otherwise the script is vulnerable to config edits

* Allow omitting the git: field

* Ignore bench-hist intermediate artifacts

Handy for including bench-hist results in a branch while avoiding the
intermediate artifacts
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants