> Procedural C is generally much faster than OO C++.
This is usually true. But it also usually has to do more with design than the language itself. The problem with OO C++ is that people get used to the "ease" of objects and start passing the things around by value. If you're constantly invoking copy constructors and making multiple temporaries with every function call, it's going to 1) quickly fragment your heap (if your object has dynamically allocated members), and 2) destroy any chance of cache hits.

Just as there is an art to coding efficient C, there is an art to coding efficient C++. C programmers have just had longer to refine it.