cabal-version: 2.2
name: ghc-events-analyze
version: 0.2.9
synopsis: Analyze and visualize event logs
description: ghc-events-analyze is a simple Haskell profiling tool that
uses GHC's eventlog system. It helps with some profiling
use cases that are not covered by the existing GHC
profiling modes or tools. It has two major features:
.
1. While ThreadScope shows CPU activity across all your
cores, ghc-events-analyze shows CPU activity across all
your Haskell threads.
.
2. It lets you label periods of time during program
execution (by instrumenting your code with special trace
calls) and then lets you visualize those time periods or
get statistics on them.
.
It is very useful for profiling code when ghc's normal
profiling mode is not available, or when using profiling
mode would perturb the code too much. It is also useful
when you want time-profiling information with a breakdown
over time rather than totals for the whole run.
.
The blog post
<http://www.well-typed.com/blog/2014/02/ghc-events-analyze/ Performance profiling with ghc-events-analyze>
describes the motivation in more detail.
license: BSD-3-Clause
license-file: LICENSE
author: Edsko de Vries, Duncan Coutts, Mikolaj Konarski
maintainer: edsko@well-typed.com
copyright: 2013-2025 Well-Typed LLP
category: Development, Profiling, Trace
build-type: Simple
extra-doc-files: ChangeLog
tested-with: GHC==9.2.8
GHC==9.4.8
GHC==9.6.7
GHC==9.8.4
GHC==9.10.2
GHC==9.12.2
source-repository head
type: git
location: https://github.com/edsko/ghc-events-analyze
common lang
default-language: GHC2021
build-depends: base >= 4.16 && < 4.22
ghc-options:
-Wall
-Wredundant-constraints
-Wunused-packages
-Wprepositive-qualified-module
-rtsopts
default-extensions:
DeriveAnyClass
DerivingStrategies
RecordWildCards
ViewPatterns
if impl(ghc >= 9.8)
ghc-options: -Wno-x-partial
executable ghc-events-analyze
import: lang
hs-source-dirs: src
main-is: GHC/RTS/Events/Analyze.hs
other-modules:
GHC.RTS.Events.Analyze.Analysis
GHC.RTS.Events.Analyze.Options
GHC.RTS.Events.Analyze.Reports.Timed
GHC.RTS.Events.Analyze.Reports.Timed.SVG
GHC.RTS.Events.Analyze.Reports.Totals
GHC.RTS.Events.Analyze.Script
GHC.RTS.Events.Analyze.Script.Standard
GHC.RTS.Events.Analyze.StrictState
GHC.RTS.Events.Analyze.Types
GHC.RTS.Events.Analyze.Utils
build-depends:
-- bundled libraries
, containers >= 0.6 && < 0.8
, filepath >= 1.4 && < 1.6
, mtl >= 2.2 && < 2.4
, parsec >= 3.1 && < 3.2
, template-haskell >= 2.18 && < 2.24
, text >= 1.2 && < 2.2
, transformers >= 0.5 && < 0.7
build-depends:
-- other external dependencies
, diagrams-lib >= 1.5 && < 1.6
, diagrams-svg >= 1.5 && < 1.6
, ghc-events >= 0.20 && < 0.21
, hashable >= 1.4 && < 1.6
, lens >= 5.3 && < 5.4
, optparse-applicative >= 0.19 && < 0.20
, regex-pcre-builtin >= 0.95 && < 0.96
, SVGFonts >= 1.8 && < 1.9
, th-lift >= 0.8 && < 0.9
, th-lift-instances >= 0.1 && < 0.2
, unordered-containers >= 0.2 && < 0.3
other-extensions:
TemplateHaskell
QuasiQuotes
common blogpost-examples
import: lang
ghc-options: -main-is BlogpostExamples
hs-source-dirs: examples
other-modules:
Examples.Common
Examples.Ex0
Examples.Ex0_Windowed
Examples.Ex1
build-depends:
, async >= 2.2 && < 2.3
test-suite blogpost-examples-nt
import: blogpost-examples
main-is: BlogpostExamples.hs
type: exitcode-stdio-1.0
test-suite blogpost-examples-threaded
import: blogpost-examples
type: exitcode-stdio-1.0
main-is: BlogpostExamples.hs
ghc-options: -threaded