Hot icon indicating copy to clipboard operation
Hot copied to clipboard

Use SMAppService if macOS >= 13 and improve performance slightly

Open uthiel opened this issue 1 year ago • 2 comments

  • With macOS 13, Apple introduced a drastically simplified way of launching an app at login, SMAppService. This PR encapsulates the new API into an availability check in order to preserve downward compatibility.

  • thermal stats are currently read by executing /usr/bin/pmset and parsing the result, which is inefficient and fragile. This PR calls IOPMCopyCPUPowerStatus directly just like pmset does which mainly results in more stable code but also a ~3% performance gain on x86_64 or ~6% on arm64e.

uthiel avatar Oct 19 '23 10:10 uthiel

  • thermal stats are currently read by executing /usr/bin/pmset and parsing the result, which is inefficient and fragile. This PR calls IOPMCopyCPUPowerStatus directly just like pmset does which mainly results in more stable code but also a ~3% performance gain on x86_64 or ~6% on arm64e.

I love transitioning to this! Just started using Hot and discovered it's spending all its time running pmset -g therm and looking at the results... checked out the github to see any discussion on this and was delighted to discover this PR!

Though also, on the new Apple Silicon computers I'm not sure if pmset -g therm or the IOPMCopyCPUPowerStatus equivalent even provides any useful information anymore? pmset -g therm seems to always just return this on my M3 MBP even when I know it's thermal throttling:

Note: No thermal warning level has been recorded
Note: No performance warning level has been recorded
Note: No CPU power status has been recorded

and the pmset man page notes that thermal information is "not available on all platforms".

So it's unclear to me if this code even needs to be ran on Apple Silicon machines at all.

varenc avatar Dec 10 '23 22:12 varenc

So it's unclear to me if this code even needs to be ran on Apple Silicon machines at all.

It doesn't. That's why the last commit executes it only on x86.

uthiel avatar Dec 14 '23 17:12 uthiel