This project is read-only.
.NET features Benchmark:

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


Analysis of the results:

CrossNet and C++ performances are mixed with .NET for the .NET features benchmark.
  • Cast
    • CrossNet is 20% or so slower than .NET 2.0.
    • I have some ideas on how to improve this, but nothing that will make CrossNet significantly faster than .NET 2.0.
  • Dictionary (Generics):
    • CrossNet and C++ are much faster than .NET 2.0 here.
    • That was a nice surpise here!
    • Note that CrossNet and C++ are using STL hash_map. So old tech is not dead! ;)
    • I temporary cheated for the CrossNet benchmark. I created a specialization for integer so it doesn't box the key (otherwise the performance would be 50% slower than .NET 2.0).
    • This is going to be solved propery soon with a traits for any type implementing IEquatable<>. The performance should roughly stay the same.
  • Events:
    • Crossnet is much slower than .NET 2.0.
    • Currently the delegates / multicast delegates are not optimized and I know what to do exactly.
    • Although the numbers are bad, in real life you won't see a significant difference. This is going to get better over time.
  • Foreach on array:
    • C++ is significantly faster than .NET 2.0, CrossNet is the slowest of all.
    • C++ is faster as the optimizer actually unrool the loop so it does 5 by 5 iterations.
    • The CrossNet code generated is good - or as good as .NET 2.0 , but still .NET 2.0 is much faster.
    • I don't understand why, but because they are not using the same asm instruction to fetch the data, that could be a different pipeline execution on Pentium.
    • We'll see on other compilers / platforms how it goes.
  • Unsafe:
    • CrossNet and C++ within the same range, and 10% faster than .NET 2.0.
    • No surprise here.

Last edited Sep 16, 2007 at 6:45 AM by OlivierNallet, version 4


No comments yet.