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 the cabal guide to application profiling #9

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions content/how-to-configure-a-cabal-project-for-profiling/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
+++
title = "How to configure a Cabal project for profiling"
date = 2024-11-27
[taxonomies]
authors = ["Hécate"]
categories = ["Cabal"]
tags = ["Performance", "Profiling"]
+++

The [Cabal Manual][Cabal Manual] now has a guide on how to analyse the performance of Haskell applications.

Choose a reason for hiding this comment

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

I still disagree with "analyze the performance of Haskell applications". My version:

Suggested change
The [Cabal Manual][Cabal Manual] now has a guide on how to analyse the performance of Haskell applications.
The [Cabal Manual][Cabal Manual] now has a guide on how to enable profiling in Haskell projects.

Copy link
Member Author

Choose a reason for hiding this comment

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

Let's have this conversation in haskell/cabal#10606 first.


<!-- more -->

This guide was contributed very generously by Malte Neuss. It describes the various options you can set in your `cabal.project` file in order to get a time or space profile of your application.

## Project Configuration Guide

It is the recommended entry point for newcomers into the world of Haskell performance analysis.
As you progress through it, you will be pointed to other resources like the [Profiling section of the GHC Users Guide][GHC] and the [Haskell Optimization Handbook][HsOpt],
which present you with more in-depth techniques and configuration options.

You will moreover be shown how to produce time and space profiles that can be rendered and analysed with third-party tools like [Speedscope](https://speedscope.app).

<img src=./speedscope.png />

You can read it there: <https://cabal.readthedocs.io/en/latest/how-to-analyze-haskell-code-performance.html>.

## Contribute to the documentation

The manual follows the [documentation best practices](@/documentation-best-practices-in-2024/index.md) of the Haddock team, and the Cabal team is eager to receive more contributions to improve the life
of our users. Do not hesitate to open a pull request at <https://github.com/haskell/cabal>.


[Cabal Manual]: https://cabal.readthedocs.io/en/latest/
[GHC]: https://downloads.haskell.org/ghc/latest/docs/users_guide/profiling.html
[HsOpt]: https://haskell.foundation/hs-opt-handbook.github.io/
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.