Abstraction and its Effects on Runtime Performance: An analysis of the Thyra package

Document Type


Publication Date



Computer Sciences | Physical Sciences and Mathematics


Mike Heroux, Computer Science


Abstract interfaces support the separation of functionality from implementation, providing the ability to adapt concrete capabilities to fit the user’s view. This generic type of programming is the purpose of the Thyra package, which contains a number of interfaces for accessing numerical algorithms. Yet by using interfaces, we are forced to accept a certain amount of overhead added to a program’s run time. To help understand more about how interfaces affect performance, access to Epetra classes via the Thyra interfaces were tested against direct access to these classes. Times were collected for running a number of numerical algorithms, and the amount of overhead for specific problem sizes and algorithms were generated. Interfaces can be very useful to a programmer; however, when to use interfaces depends on how much overhead someone is willing to accept.