Performance


The performance of the code generated by the Sather compiler is quite good. Claudio Fleiner has a suite of benchmarks that evaluate the effect of various optimizations. In summary, the performance of Sather without any optimizations on is significantly worse than C/C++, but with optimizations on, Sather code can be significantly faster than the equivalent C++ code. It is always possible to hand optimize C code to get equivalent, or somewhat better performance. However, this requires more effort and makes the result less readable and harder to modify.

Direct performance comparisons of this sort must be taken with a grain of salt. They may be reasonable comparisons for applications which have a small, compute-intensive core, where the code written in the different languages will be roughly equivalent. In a larger application, the final performance will be affected by a number of language features which result in non-equivalent code in different languages. For instance, if one were coding up an application in C which called for a set or bag, it would be a fair amount of work to code and debug a hash table implementation - the tendency would be to use a simpler, but potentially more expensive, data structure. In Sather, on the other hand, using a reasonable implementation of a set or bag is a relatively trivial matter. This can result in an application with much better and more scalable performance.

Work is also proceeding on interfacing to various standard Fortran mathematical libraries for matrix and vector operations, that should provide optimal performance on many architectures.