It's not so much raw performance of a given language, but the stuff that "managed" languages and their runtimes do under the hood that's the problem. I've spent a lot of time debugging stuff like ARC (Automatic Reference Counting) creating hidden reference counting calls that were eating up a terrible amount of total CPU time. These hidden performance traps are much worse than having to think about (e.g.) proper memory management and data layout. I'll take manual memory management over any 'magic solution' anytime (they just increase complexity and if disaster strikes it is much more trouble to find and fix the problem).