Files
SpeedScope/src
Tristan Hume e35335fe3c Haskell GHC JSON format support (fixes #182) (#183)
Fixes #182 by adding support for importing the JSON profiling format created by GHC's built in profiling support when the executable is passed the `-pj` option. Produces a profile group containing both a time and allocation profile.

Unfortunately, GHC doesn't provide the raw sample information to get the time view to be useful, so only left heavy and sandwich are useful.

Includes a test profile, and I've also tested it on a more real large 2MB profile file in the UI and it works great.

I also modified the Readme to link to a wiki page I'm unable to create, but that should have something like this content copy-pasted into it:

# Importing from Haskell

GHC provides built in profiling support that can export a JSON file.
In order to do this you need to compile your executable with profiling
support and then pass the `-pj` RTS flag to the executable.

This will produce a `my-binary.prof` file in the current directory which
you can import into speedscope.

## Using GHC

See the [GHC manual page on profiling](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html)
for more extensive information on the command line flags available.

```
$ ghc -prof -fprof-auto -rtsopts Main.hs
$ ./Main +RTS -pj -RTS
```

## Using Stack

### With executables

```
$ stack build --profile
$ stack exec -- my-executable +RTS -pj -RTS
```

### With tests

```
stack test --profile --test-arguments "+RTS -pj -RTS"
```
2018-10-29 09:37:11 -07:00
..
2018-08-23 09:59:16 -07:00

Speedscope TypeScript source

This directory contains the bulk of speedscope's source code.

Subdirectories

  • gl/: WebGL code. This includes e.g. the code to render flamecharts.
  • import/: Code to import profiles from varous profilers into speedscope. This include e.g. the code to import Chrome performance profiles.
  • lib/: Mostly dependency-less utilities. This includes e.g. an LRU cache implementation, basic linear algebra classes, and the definition of speedscope's file format.
  • store/: Speedscope's application state management. Implemented using redux.
  • typings/: TypeScript definition files
  • views/: View code to generate the HTML & CSS used to construct the UI. Implemented using preact and aphrodite. Also contains code mapping from the redux store to views using preact-redux