Haskell GHC JSON format support (fixes #182)#183
Conversation
jlfwong
left a comment
There was a problem hiding this comment.
Thanks for doing this! 🎉
This looks great. If you accept the suggested changes, then I think this should be good to merge. Once that's done, I'll update the wiki, deploy, and publish the new version to npm.
Co-Authored-By: trishume <[email protected]>
Co-Authored-By: trishume <[email protected]>
Co-Authored-By: trishume <[email protected]>
|
Thanks, suggestions applied, such a great new feature. Although I wish there was a way to apply multiple suggestions in one commit 😐. I wonder if until they add that ability there will be a surge in maintainers using the squash before merging strategy... |
|
Thanks @trishume! This is now merged, published to npm, and deployed to https://www.speedscope.app/. I also added the documentation you wrote to the wiki: https://github.com/jlfwong/speedscope/wiki/Importing-from-Haskell |
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
-pjoption. 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
-pjRTS flag to the executable.This will produce a
my-binary.proffile in the current directory whichyou can import into speedscope.
Using GHC
See the GHC manual page on profiling
for more extensive information on the command line flags available.
Using Stack
With executables
With tests