Arithmetic Benchmark:

Unit in seconds - Smaller is better - you should consider a difference of 10% or less as negligible.


Analysis of the results:

In most cases, CrossNet and C++ are outperforming .NET by a significant number on arithmetic benchmarks.
  • Fannkuch:
    • CrossNet and C++ are definitively in the same range, with 30% or so faster than .NET 2.0.
    • The C++ optimizer makes definitively the difference here.
  • Heapsort:
    • All in the same range, C++ slightly faster, CrossNet slightly slower than .NET 2.0 (I don't know why yet).
  • Matric mult:
    • CrossNet and C++ are much faster than .NET 2.0 (like 4 to 5 times faster).
    • Note that the matrices are implemented as a bi-dimensional array, this case might not be optimized on .NET 2.0.
    • It is possible that using a single dimensional array would make the 3 implementations in the same range (I have to test though).
    • C++ is faster than CrossNet - I would guess that's how multi-dimensional array are implemented.
    • In C++, it's an array of array, where on CrossNet I implement this with a single stream of data and I multiply by the size.
    • Depending of the speed of the mult, one or the other method might be better (CrossNet could actually support both with a define).
    • By using an array of array, it will take slightly more memory (and potentially N allocated blocks instead of 1 depending of the implementation).
  • Sieves:
    • CrossNet and C++ are in the same range, 20% or so faster than .NET 2.0.
  • partial Sums:
    • CrossNet and C++ with exact same timing, almost 20% faster than .NET 2.0.

Last edited Sep 16, 2007 at 5:42 AM by OlivierNallet, version 7


No comments yet.