MacOS Slow by Design

Both Marco Arment and John Siracusa described noticeable delays and stalls after upgrading to macOS 10.15. I have been struggling with this issue myself and have found several system operations that can cause these delays, which I will detail below. post

.

22 May 2020 by noel quinn >This is a symptom of the long term decline of Intel’s architecture due to memory leak issues that can only be papered over until a new architecture can be developed. Software will get progressively kludgier until ARM or RISC V can take over. Both those architectures are on tiny development budgets compared to the massive fire power of Intel, and there is a general reluctance across the industry to contemplate other architectures because the reskilling required means most people in the industry will have to go back to school or risk irrelevance. This means that the WinTel juggernaut continues to seem relevant in spite of the continuous stream of new hacks that require patching on a vast scale. This is the long term price Apple paid for ditching Motorola and may explain why Mac OS still relies on Cocoa. They probably have a whole new OS in development but aren’t in a hurry to deploy because they are under no pressure to do so. When the switch comes the market will be surprised, but it will seem obvious with hindsight.

Cocoa is Apple's native object-oriented application programming interface (API) for the Darwin operating system macOS (2000) page

Memory management in the Cocoa environment is based on managing dynamically allocated memory. Objective-C (1984) implemented a push and pop scheme for allocated objects. When an object's retain count reaches zero, it is deallocated by a procedure similar to a C++ destructor.

Starting with Objective-C 2.0 (2016), implemented an optional garbage collector, which is now obsolete and deprecated in favor of Automatic Reference Counting (ARC). In this model, the runtime turned Cocoa reference counting operations such as "retain" and "release" into no-ops page The garbage collector does not exist on the iOS implementation of Objective-C 2.0. Garbage collection in Objective-C ran on a low-priority background thread, and can halt on Cocoa's user events, with the intention of keeping the user experience responsive.

The legacy garbage collector was still available on Mac OS X version 10.13 (High Sierra), but no Apple-provided applications used it. In 2011, the LLVM compiler introduced Automatic Reference Counting (ARC), which replaces the conventional garbage collector by performing static analysis of Objective-C source code and inserting retain and release messages as necessary. page

YOUTUBE qy3iZPHZ88o Garbage Collection to ARC - Michael Gottesman, Apple.