C++ Compilers' Performance. Implementation's quality

Annotation

There is a certain number of publications available in the Internet which compare performance of a code generated by different C++ compilers on various hardware platforms for some test tasks (e.g. a review on the 'coyote gulch' site). This type of reviews is also issied by compiler manufacturers to draw attention to their products. Surely this type of reviews is very practical; they help to take into account a factor of the generated code absolute performance while selecting a development toolchain.

At the stage when a compiler has already been selected, however, a developer faces a question of what approach should be used for implementation a particular piece of code. As soon as any C++ compiler is able to compile a C code as well there is always a choice: to use new language features provided by C++ or to implement the same functionality in pure C. In other words there is a question of overheads which are introduced by new C++ features or how well the corresponding feature is implemented by a certain C++ compiler.

There are not too many comparisons of a performance a C++ code and a functionally equivalent C code which are generated by the same compiler. In fact there is only one well known source - it is 'Technical Report on C++ Performance' issued by WG21 committee. The report gives specific numbers and the used test code while the compilers are left anonymous. The logic of the committee is understandable however practicing engineers need more specific information.

The above mentioned report is taken as a basis for the article. The set of tests was extended; the code was modified in some cases and the more detailed analysis of the incurred overheads is provided. In most cases the exact figures are given for each pair: a compiler - a hardware platform. The reader may get an answer not only for the question 'what overheads are incurred by that language feature?' but for the question 'how big are those overheads?' as well.





Last Updated: October 1, 2007