Objective-C is slower than C and C++. Period. OSX uses Objective-C (especially it's inherent slow message passing versus procedural calls in C/C++). Windows uses C and C++ with many portions in the Kernel in assembly (machine code on metal is fastest you can get). Yes, the simple MOST basic task of calling a function is slow on OSX because of Objective-C. How can they fix this? Start porting to assembly and C. Get rid of Objective-C. It is not the future (especially when it drags along archaic interpreted memory management concepts). The future is low power and high performance in mobile devices. Interpreted stuff require lots of ram, lots of power wasted. This is the reason XNA was dropped on Windows Phone and also Windows 8. C# (interpreted language) is a dying breed in the future. Even Android game developers bypass the Java and code everything in C/C++, and not many code games on it because it is horribly complicated because of the Java layer. Google may drop Java requirement in the future in android to save themselves.
OSX uses VLVM compiler, which will hog up all your ram (2x at least) in order to get similar optimizations (or worse) than basic GNU compiler. It needs all that ram to look for optimizations. Unfortunately it will hog so much resources half of your stuff will be dumped to the harddrive and the swapping back and forth will negate any benefits you "may" get. I mention "compiler" because OSX has these "convenience" vs "performance" problems where it will leave graphics drivers in an uncompiled state ready for running (interpreted) on a virtual machine backend of the vlvm. Anything interpreted will need more than 2x the memory and 2x the cpu cycles to do the same thing than non-interpreted languages. Anything you see requiring Virtual Machines means slow (like Java, C#, Python, etc). Even Objective-C has some (or carries with it concepts of garbage collection which requires a virtual machine, even if you manually release the memory). When did VLVM first show up as a requirement on OSX? Lion and Mountain Lion. This is why there are so many threads on why Snow Leopard is like 50% to 2x faster than Lion (and Mountain Lion).
The Feral comment on DOF I think is "depth of field". It is the post processing that makes things blurry for things far away or too close to you that is not in focus. Even with that off, Windows will run faster than OSX. It comes back to square 1: Performance on the layer between the game and the metal (OSX).
So what can Apple do? Move towards C/C++ and assembly, start getting rid of interpreted stuff and virtual machines in all their products. Getting off Objective-C might be hard, but it is a superset of C, so it is not difficult to move in that direction.
Wanted to chime in because people think getting better graphics drivers or the OpenGL versus DirectX will fix their problems. It won't when the language and the operating system is the slowest layer. Even on OpenGL vs DirectX9, Windows games run faster than same OSX games (not a DirectX11 thing). Even when Snow Leopard versus Windows, OSX was slower (Objective-C). But back then it was only 20% slower. Now with interpreted and virtual machine stuff everywhere (from vlvm) in Lion and Mountain Lion, you are getting 200% slower in games.
Wow. I wanted to argue because I've used Objective-C a lot in the past, but my own tests are proving you correct. I need to find a way to use some other compiler (Xcode doesn't seem to have other options) and get back into C programming. Thanks for the information.