CAN/CSA-ISO/IEC TR 18015:12

Information technology — Programming languages, their environments and system software interfaces — Technical Report on C++ Performance
1 Scope The aim of this Technical Report is: - to give the reader a model of time and space overheads implied by use of various C++ language and library features, - to debunk widespread myths about performance problems, - to present techniques for use of C++ in applications where performance matters, and - to present techniques for implementing C++ Standard language and library facilities to yield efficient code. As far as run-time and space performance are concerned, if you can afford to use C for an application, you can afford to use C++ in a style that uses C++’s facilities appropriately for that application. This Technical Report first discusses areas where performance issues matter, such as various forms of embedded systems programming and high-performance numerical computation. After that, the main body of the Technical Report considers the basic cost of using language and library facilities, techniques for writing efficient code, and the special needs of embedded systems programming. Performance implications of object-oriented programming are presented. This discussion rests on measurements of key language facilities supporting OOP, such as classes, class member functions, class hierarchies, virtual functions, multiple inheritance, and run-time type information (RTTI). It is demonstrated that, with the exception of RTTI, current C++ implementations can match hand-written low-level code for equivalent tasks. Similarly, the performance implications of generic programming using templates are discussed. Here, however, the emphasis is on techniques for effective use. Error handling using exceptions is discussed based on another set of measurements. Both time and space overheads are discussed. In addition, the predictability of performance of a given operation is considered. The performance implications of IOStreams and Locales are examined in some detail and many generally useful techniques for time and space optimizations are discussed. The special needs of embedded systems programming are presented, including ROMability and predictability. A separate chapter presents general C and C++ interfaces to the basic hardware facilities of embedded systems. Additional research is continuing into techniques for producing efficient C++ libraries and programs. Please see the WG21 web site at www.open-std.org/jtc1/sc22/wg21 for example code from this Technical Report and pointers to other sites with relevant information.
SDO:
CSA
Language:
English
ICS Codes:
35.060
Status:
Standard
Publish date:
2012-02-29
Standard Number:
CAN/CSA-ISO/IEC TR 18015:12