CAN/CSA-ISO/IEC TR 18015:12
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