Commit Graph

13 Commits

Author SHA1 Message Date
Junyoung/Clare Jang
679f1d0f62
Reformat all files (#1439)
* Update nix-shell excludes regexs

* Format all files
2021-02-24 21:34:35 -05:00
Pepe Iborra
9bb3bb72b0
[shake-bench] collect eventlogs (#1324)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-02-09 00:38:58 +00:00
Pepe Iborra
21cdce2a03
[shake-bench] extract project dependencies action (for the HEAD binary) (#1325)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-02-08 22:21:09 +00:00
Pepe Iborra
762838d4c8
[benchmark] add warmups (#1323)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-02-08 19:32:49 +00:00
Pepe Iborra
79c5cc75d9
Parallelize benchmark CI (#1320)
* [benchmark] command line config argument

* [benchmark] Add a phony target for every example

* [benchmark] add config to toggle heap profiling

* [shake-bench] Phony rules for binaries

* [CI] benchmark jobs tree

* update mergify conditions
2021-02-08 09:45:18 +00:00
Pepe Iborra
ebd8816ee5 hlint 2021-02-06 13:00:29 +00:00
Pepe Iborra
71e75c4a80 [benchmark] change the extension used for -S files
benchmark-gcStats was such an odd extension
2021-02-06 12:41:14 +00:00
Pepe Iborra
87e9615866 [benchmark] Lower the frequency of heap census to avoid starving the mutator
Heap census is preceded by a GC pass. The default interval of 0.1 seconds causes
the mutator time to go down to 14% in the HLS example
2021-02-06 12:40:54 +00:00
Pepe Iborra
0cfd629b1f [benchmark] disable parallel GC to avoid segfaults with -h 2021-02-06 12:40:51 +00:00
Pepe Iborra
573d184167
Produce heap profiles the old fashioned way, from .hp files (#1261)
The -eventlog runtime is not reliable when combined with +RTS -h
leading to undiagnosed crashes and infinite loops.

The crashes are sporadic and seem to arise more frequently in the lsp-types
example, although we have not investigated deeply since there is a simple
alternative that doesn't crash: the vanilla runtime.
2021-01-26 00:45:58 +00:00
Pepe Iborra
e0caba5a8a
Benchmarks: generate heap profiles (#1253)
* Parallelize benchmarks

* [benchmarks] Collect heap profiles

* [benchmarks] pass RTS options to the real thing!

We were passing RTS options to the wrong thing

* Drop the 8.6.5 benchmark since the vanilla rts doesn't support +RTS -h

* Tone down timeout

* Review feedbacks
2021-01-23 23:52:01 +00:00
Pepe Iborra
3773010287
Benchmark improvements (#1178)
* [test-ci] fix wibble

* [ghcide-bench] fix scrambled output

* [ghcide-bench] add a new experiment: getDefinition after edit

* [ghcide-bench] refine the position used for identifiers

* [ghcide-bench] Support examples with multiple FOIs

* [ghcide-bench] Allow identifierP to be optional

* [ghcide-bench] experiments: do all edits first, then query

* [ghcide-bench] Add examples with multiple FOIs

* [ghcide-bench] add a completions (without edit) experiment

* [ghcide-bench] Fix indentation

* [ghcide-bench] Fix incomplete pattern match

* [ghcide-bench] Include the documentContents setup in the "startup" metric

* [ghcide-bench] fix wibble

* [ghcide-bench] add more verbose output

* [shake-bench] Consolidate -s code

* [bench-hist] Fix: depend on # samples

* [ghcide-bench] cache searchSymbol

* [cabal-bench] --no-clean
2021-01-10 08:03:31 +00:00
Pepe Iborra
14af467e97 Extract the benchmarking Shake rules to a standalone Cabal package (haskell/ghcide#941)
* [bench-hist] break down in rule functions

* Extract the benchmarking Shake rules to a shake-bench package

There's some room for reusing the rules used in the historic benchmarking suite
in other projects. This change makes that a bit easier and improves the
documentation and code structure.

The new structure is:
- lib:shake-bench - a Cabal library with functions to generate Shake rules
- ghcide:bench:benchHist - the ghcide instantiation of the above Shake rules

That's not to say that shake-bench is completely decoupled from ghcide -
there are still plenty of assumptions on how the benchmarks are organized, their
outputs, etc. But with a little bit of effort, it should be easy to make
these rules more reusable

* Fix nix build

* Fix license

* hlints and redundant imports

* more hlints

* Exclude shake-bench from the stack build
2020-12-07 15:03:15 +00:00