Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add performance regression tests and benchmarks #807

Closed
cocreature opened this issue Dec 14, 2019 · 12 comments
Closed

Add performance regression tests and benchmarks #807

cocreature opened this issue Dec 14, 2019 · 12 comments
Labels
performance Issues about memory consumption, responsiveness, etc. priority: high High priority item type: enhancement New feature or request

Comments

@cocreature
Copy link
Contributor

It would be good to have some performance regression tests. We have a small wrapper around lsp-tests in DAML https://github.com/digital-asset/daml/blob/master/compiler/damlc/ide-debug-driver/README.md that makes it easy to script sessions which I’ve used successfully in the past to track down performance issues which might come in handy here.

@domenkozar
Copy link
Contributor

domenkozar commented Jan 3, 2020

@ndmitchell
Copy link
Collaborator

Would be good to include benchmarks, which might be things that run for infeasibly long to include in tests, but are great at measuring and improving things in the region of 5% or less.

@cocreature cocreature changed the title Add performance regression tests Add performance regression tests and benchmarks May 24, 2020
@ndmitchell
Copy link
Collaborator

Copying over @pepeiborra's comment:

How to prove that they are capturing real workloads? Perhaps use haskell-lsp to record and replay real interactions with vs code, emacs, rather than modelling them with lsp-test

I looked at this a bit. I think testing on real world workloads may be very important, since otherwise we can't capture all the nuances of what is being watched via notifications etc.

@pepeiborra
Copy link
Collaborator

@mpardalos - do you have plans to do this over the summer? It’s sorely needed!

@mpardalos
Copy link
Contributor

@pepeiborra Yes! I am planning on recording some sessions for this reason.

I was planning on using lsp-test to run those sessions. I spoke with my GSoC mentor about this (@mpickering) and he told me that apparently lsp-test currently has problems with replaying sessions (it doesn't respect request timings) which might be a blocker for now? I couldn't find the relevant issue there so he probably has a better idea of what the problem is.

@pepeiborra
Copy link
Collaborator

I'm working on a simple benchmark based on https://neilmitchell.blogspot.com/2020/05/fixing-space-leaks-in-ghcide.html

@jneira
Copy link
Member

jneira commented Sep 16, 2020

@cocreature the project already has a benchmark, comparing branches and running in ci, courtesy of @pepeiborra, so only regression tests would be needed to close this?

@cocreature
Copy link
Contributor Author

@jneira yeah I think so.

@pepeiborra
Copy link
Collaborator

Detecting regressions in allocations would be sweet. Steps to do this:

  1. Enhance the benchmark outputs to include the total allocated bytes
  2. Add a step to the bench CI script to check that the allocated bytes did not go up by more than a certain threshold

@pepeiborra
Copy link
Collaborator

1 is done, but 2 is still very much needed

@pepeiborra pepeiborra transferred this issue from haskell/ghcide Jan 1, 2021
@jneira jneira added type: enhancement New feature or request performance Issues about memory consumption, responsiveness, etc. labels Jan 3, 2021
@jneira
Copy link
Member

jneira commented Nov 26, 2021

I supposethis still is not done

@hasufell hasufell added the priority: high High priority item label Jul 13, 2022
@soulomoon
Copy link
Collaborator

done in #4203

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance Issues about memory consumption, responsiveness, etc. priority: high High priority item type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

9 participants