Hot
Hot copied to clipboard
Use SMAppService if macOS >= 13 and improve performance slightly
-
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.
- 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.
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.