6 Comments

Instruments’ precursor was Shark, and more than a decade ago I lived and died by it while working on JS engine performance at Mozilla.

One thing that Shark had that I miss in Instruments is the ability for the *application* to start/stop/pause/resume profiling. This let us add hooks in the browser so that we got super clean profiles of specific operations, without having to weed out all the setup/teardown stuff by hand in the profile viewer. It was so so good.

Expand full comment
author

Aw man that sounds lovely, that's one thing that I've been missing a lot. I even thought about setting up global shortcuts on the OS level so that I can start the profile at the right time without having to switch windows and deactivate my application etc. and so on.

Going to look for some screenshtos of Shark now.

Expand full comment

Note that Apple's platforms have a "signpost" API as part of the OSLog subsystem, and Instruments supports this. This lets you, well, signpost critical events in time, or mark time intervals. You can attach metadata to the events and perform some basic data mining on the metadata in Instruments, and events and intervals show up on the visual timeline as well. Here's a starting point: https://developer.apple.com/documentation/os/logging/recording_performance_data

Expand full comment
author

I actually used that before with this library: https://github.com/pcwalton/signpost It's pretty neat.

Expand full comment

https://www.cs.tufts.edu/comp/150PAT/tools/shark/SharkUserGuide.pdf has some, and describes the API. There were some other things in the CHUD package (spin control, I think, and a memory profiler?), but Shark was the gem.

Expand full comment

Man one thing I gripe about cure gen Mac OS is that when I sleep with lid closed and connect to external monitor the os just wake up instantly. I tried to look into that in activity monitor without availing. I’ll give instruments a shot

Expand full comment