-
Notifications
You must be signed in to change notification settings - Fork 296
Haskell GHC JSON format support (fixes #182) #183
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
Conversation
jlfwong
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 <tris.hume@gmail.com>
Co-Authored-By: trishume <tris.hume@gmail.com>
Co-Authored-By: trishume <tris.hume@gmail.com>
|
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