On the Numerical Efficiency of C++ in Scientific Computing
Erlend Arge, Are Magnus Bruaset, Phillip B. Calvin, Joseph Kanney, Hans Petter Langtangen, Cass T. Miller · Birkhäuser Boston eBooks · 1997
We investigate the relative efficiency of C++ and C code versus FORTRAN 77 code through numerical experiments conducted on a range of computer platforms. The problem areas cover basic linear algebra and finite element solution of porous media fluid flow and species transport problems. The C++ codes are short and make extensive use of Diffpack, a generic library based on object-oriented programming techniques, while the FORTRAN and C programs are either based on vendor supplied numerical libraries or written and tuned particularly for the test problem. Challenges encountered in optimizing C++ codes and the efficiency of dynamic memory handling in C++ are also addressed. Differences in computational efficiency observed for the problem areas studied were small, and tended to be problem dependent. Based on our experience with optimizing C++ code, we conclude that the use of object-oriented techniques should be confined to high-level administrative tasks, while CPU intensive numerics should be implemented using low-level C code and carefully constructed for-loops. These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.