| ▲ | jandrewrogers 5 hours ago | |||||||||||||||||||||||||||||||||||||
Modern C++ metaprogramming materially impacts performance in practice. I’ve done performance engineering for decades in both C and modern C++ and I would assert that the difference isn’t arguable. The poor applicability of auto-vectorization is another area where C++ is strong. You can transparently codegen e.g. AVX512 from intrinsics directly in C++ in contexts that would be opaque to auto-vectorization and difficult to generalize in C. This allows you to get some degree of “auto-vectorization” where the compiler can’t see it because it works at the wrong level of abstraction. With sufficiently heroic efforts you can write C that matches the performance of C++. I’m not arguing that. Virtually no one writes C to that standard, including myself when I was writing high-performance C because the effort was too high, so it is a bit of a strawman. It is the difference between theory and practice. All code bases have a finite budget. C++ can do a lot more optimization in the same budget as C. | ||||||||||||||||||||||||||||||||||||||
| ▲ | globalnode 4 hours ago | parent [-] | |||||||||||||||||||||||||||||||||||||
So youre saying the metaprogramming facilities of C++ allow the compiler to better optimise high level human readable code more effectively than C. Thats a fair point and one I'd never even thought of before, I always thought C was faster because of things like v-tables and all that stuff. | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||