Note also that the Unix subsystem in OS X is more of a compatibility layer, and that by and large native OS X applications do not use POSIX system calls in any situation – rather the POSIX system calls are more of a wrapper around others.
Cheetah belied its name: it was very slow on pretty much every platform you throw it at. If you were to run it on, say, an old PowerMac G3, you might have been forgiven for thinking that upgrading to a PowerMac G4 would make it a lot faster. For the most part, you would have been wrong.
Also, you may think that the slowness was superficial and only applies to trivial GUI things like window resizing, file dialogs and pull down menus. You would be wrong about this, also. A call to sigaction(2) takes, by observation, around 20 times the time to execute under MacOSX than under Linux on the same platform. In real world times, that was around 3 seconds.
Speculation has it that this is due to the use of a MicroKernel.
I have seen articles which state that it is due to the time to create a new thread and demonstrated it through simple C programs. Can't find the article at present but find plenty of references saying MySQL and Apache are painfully slow -- IanMcDonald
AFAIK It only applied to pthreads. Every app written in Carbon or Cocoa (ie, every single GUI app on OSX) uses NSThreads which doesn't seem to be painfully slow from actually using MacOSX. Incidentally, my 1.4Ghz Mac Mini kicks the crap out of my Celeron 1.1GHz PC when benchmarking MySQL, which other benchmarks would have you believe that's not possible, so it can't be that bad :P. Also, some have attributed the slowness in MySQL to the fact that InnoDB uses fcntl() to guarantee data has been written to disk instead of fsync(). See http://lists.apple.com/archives/darwin-dev/2005/Feb/msg00072.html -- PhilMurray
Found the article at http://www.anandtech.com/mac/showdoc.aspx?i=2436&p=8 - it says in particular "Mac OS X is incredibly slow, between 2 and 5(!) times slower, in creating new threads, as it doesn't use kernel threads, and has to go through extra layers (wrappers). No need to continue our search: the G5 might not be the fastest integer CPU on earth - its database performance is completely crippled by an asthmatic operating system that needs up to 5 times more time to handle and create threads." He then follows up in a subsequent article and clarifies here why it is not quite correct but peformance is still bad http://www.anandtech.com/mac/showdoc.aspx?i=2520&p=7 -- IanMcDonald
Jaguar introduced QuartzExtreme, which used your 3D graphics card for window compositing and rendering. Doing this enabled things like alpha translucency and drop shadows (both of which Mac OS X makes extensive use of) to be used "for free". This provided a much needed speedup for GUI operations.
Panther, enhanced QuartzExtreme as well as providing a number of other speedups, finally making simple tasks like scrolling and using pull down menus bearable. Panther also greatly improved compatibility with Windows file sharing (using Samba 3.0) and had several significant enhancements to the BSD and GNU command line tools included. Xcode debuted with the release of Panther, obsoleting the aging ProjectBuilder and adding several nice new features to the free GCC-orienteded development environment included with the OS.
Tiger continues to enhance performance, although many of the enhancements are not available yet. Quartz2DExtreme was to debut with Tiger, but ships disabled on all Macs. It takes acceleration on the graphics card one step further by using programmable shaders to render GUI elements. Rumour has it it will be enabled in a future Tiger point release.