← Back to context

Comment by danpalmer

15 hours ago

Apple weather is fully native from what I understand. I suspect the 250MB comes from the video backgrounds they play. Arguably that would be a reasonable thing to sacrifice on low memory systems, you'd barely notice.

I was able to do some tests with AI agent help and got:

- ~45 MB on buffers for animated backgrounds

- ~10 MB used for the Swift language runtime (runtime type information)

- ~44 MB used for system libraries: libSwiftCore, CoreFoundation, libobjc, Metal, VFX

- ~21 MB used on GPU buffers (GPU memory is also part of used system memory because of unified memory)

- ~6.3 MB for the weatherd daemon that actually collects the weather info and makes it available to the weather app and to widgets

- ~6.2 MB used for the display color pipeline (to handle color gamuts proprtly)

- ~7 MB runtime caches (shader compiler cache, libobjc cache, etc.)

- ~1-2 MB used for particle effects

- ~34-40 MB of memory as general heap memory that was otherwise unaccounted for (this seems to mostly be stack memory and threading-related stuff, and the actual application logic)

Overall the app is relatively optimized

  • Nice find and summary. Of I'm not surprised to see the ~75MB for the high graphical fidelity of the app.

    I am however surprised that 10MB is Swift language runtime - with ABI compat this is supposed to be shared, and that the weather daemon is >6MB (surely this is just a simple API client?!).

  • Relatively optimized? typo?

    • I think this depends on perspective. Compared to an Electron app, it's significantly better. Compared to a hand-optimised app implemented in a low level language it's not great.

      I've not done a lot of Swift/iOS/macOS, but I have a passing familiarity. These numbers are basically what I'd expect for a normal app. In other words I think the relative optimisation comes from the fundamentally better technology choice rather than from being particularly careful about performance.