[MAGEEC] Removing dependencies from BEEBS
James.Pallister at bristol.ac.uk
Wed Oct 2 20:25:20 BST 2013
I've been working on the BEEBS benchmarks recently, and was considering
removing dependencies on the C std library. This would involve having
implementations of the (few) functions used in the benchmarks as part of
those benchmarks themselves. For example, the encryption benchmarks use
rand to create the data which is to be encrypted. The rand function
would be incorporated as part of the benchmark.
* No external dependencies
* Reduced benchmark size
* When testing optimizations, the relevant standard library code
will also be optimized under the same optimization level. This happened
before with the cubic benchmark - the majority of computation is
performed in precompiled std library functions - cos, sin, sqrt, etc.
The result was that optimizing the cubic benchmark had little effect,
due to the precompiled std library being linked in.
* The code is more independent of external factors - e.g. using
newlib vs uClib.
* There isn't much code dependent on std library features (dijkstra,
* Possible code bloat - repetition of code between benchmarks?
* Repetition of code that would normally be expected to be provided
(std lib functions such as malloc, rand)
* Additional complexity.
I'm currently leaning towards making the benchmarks standalone. Any
thoughts on whether this is a good or a bad idea?
More information about the mageec