A critical issue in the development of efficient scientific software is the consistent measurement of execution time of program segments to 1) determine bottlenecks that can be eliminated to improve performance, and 2) compare program performance with standard reference software. In the Fortran-77 and C languages there are no standard functions for measuring execution time, so timing measurements have always been ad hoc and system dependent. In the new Fortran-90 language the system_clock routine has been standardized, however its primitive level makes it difficult to use directly, which can result in inconsistent measurements. Other new features of the language, used with the system_clock routine, now make it possible to create a software tool that can standardize the measurement of program execution time using modern programming techniques.
The primary goal of this project is to create a Fortran-90 module (a Fortran-90 construct similar to a C++ class) to standardize the measurement of program execution time, and to deliver this generic-use software to industry through internet channels like the Fortran Market, netlib and GAMS. We also expect to use the module within NIST for measurement of standard reference software and algorithms in the Information Technology Laboratory, and optimization of scientific software in collaboration with other NIST laboratories. The module has an object oriented interface with which users can create as many timers as are needed, and operate on them in stopwatch fashion with functions like start, stop, read and reset. A secondary goal is to obtain experience with new technologies such as Fortran-90 and object oriented programming techniques in anticipation of future NIST needs.
During the past year: