The ESA Ravenscar Benchmark
What is ERB ?
The European Space Agency has spent significant resources for the developement of the space-hardened ERC32 processor. However, in order to optimize the use of Ada Sofware in the space context, ESA needed a way to quantify the relative efficiencies of the Ada Ravenscar implementations available for this platform, and to compare them with a C compiler implementation on the RTEMS operating system. This is what this project aims at provinding.
ERB aims at addressing this issue. It is a performance test harness and a set of tests targeting Ada 95 Ravenscar environments running on the ERC32 and Leon processors, as well as the RTEMS C environment. The test harness uses the erc-elf-sis simulator to run the tests. This facilitates direct comparisons between the target environments and frees users from obtaining a board to use the test suite.
Performance is only considered from the side of generated code efficiency and requirements and not from the side of compiler efficiency (e.g. compilation time).
Individual test cases measures various Ada 95 langage features or Ravenscar-specific constructs from three different points of view:
- Execution time
- Code size
- Memory footprint
In order to provide a meaningful comparison between the Ada Ravenscar environments and the RTEMS C compiler, some of these constructs have been translated to corresponding C constructs using the native threading library and providing similar semantics. Obviously not all the tests have been ported, since the Ada semantics is far richer than that of C. For instance, dynamic dispatching in object-oriented context does not make sense in C and won’t be translated.
Where can I get it ?
The latest development version of ERB can be downloaded from the Subversion repository using the following command:
svn checkout http://svn.eu.adacore.com/anonsvn/Dev/trunk/erb
How can I get started?
The simplest way to get started is to read the file GETTING_STARTED, located at the root of the installation. Then, if you need more detailed information, look at the User’s Guide in the docs/ subdirectory