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" ```
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 usingredux.typings/: TypeScript definition filesviews/: View code to generate the HTML & CSS used to construct the UI. Implemented usingpreactandaphrodite. Also contains code mapping from thereduxstore to views usingpreact-redux