Improving Performance and Maintainability in Modern C++

By J Daniel Garcia

In this talk I will provide additional details on the article recently posted to http://isocpp.org "Improving performance and maintainability through refactoring in C++11" (please, see https://isocpp.org/blog/2015/10/garcia-stroustrup-refactoring) as well as updates on recent findings.

Abstraction based programming has been traditionally seen as an approach that improves software quality at the cost of losing performance. However, we explored the cost of abstraction by transforming an application of the PARSEC benchmark (namely fluidanimate application) from low-level, hand-optimized C to a higher-level and more general C++ version that is a more direct representation of the algorithms. We eliminated global variables and constants, used vectors of a user-defined particle type rather than arrays of built-in types, and separated the concurrency model from the application model. The result is a C++ program that is smaller, less complex, and measurably faster than the original.

The fluidanimate application was chosen to be representative of many applications and our transformations are systematic and based on principles. Consequently, our techniques can be used to improve the performance, flexibility, and maintainability of a large class of programs. The handling of concurrency issues has been collected into a small new library, YAPL.

Although the main focus of the talk will be the design principles and techniques that are generally applicable, we will also provide evaluation information on multiple architectures showing the impact on performance.





Your Privacy

By clicking "Accept Non-Essential Cookies" you agree ACCU can store non-essential cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

Current Setting: Non-Essential Cookies REJECTED


By clicking "Include Third Party Content" you agree ACCU can forward your IP address to third-party sites (such as YouTube) to enhance the information presented on this site, and that third-party sites may store cookies on your device.

Current Setting: Third Party Content EXCLUDED



Settings can be changed at any time from the Cookie Policy page.