Benchmarks, Performance and Speed Tests

Software developers and software architects need information about the throughput, speed and performance of basic structures, algorithms and libraries to design their software. These benchmarks where created during research activities for the Second WAF project. Additional benchmarks and performance tests will be published as they will be created for our projects. These Tests should run on Novell Mono too. The major focus of these tests is throughput (how many operations can be done in a second).

Benchmarks and Performance Tests in Visual Studio

Important: Never do any performance test with attached debugger! Even when you have a release build, an attached debugger has an enourmous performance impact (sometimes 5-10 times slower) on your application. Don't start your project by pressing F5 (debug) in Visual Studio. Use Ctrl-F5 or "run without debugging" from the menu instead. No debugger will be attached and you get accurate benchmarks.

If you forget this, you get fooled in several ways. Especially when yo benchmark own libraries against the framework ones. The whole framework is compiled into native images via NGen.exe during installation. An attached debugger has nearly no performance impact on native images and native code. Thats why your own library get an huge impact due to the attached debugger, while the the framework lib won't.

Tests Available

Container Performance

System.Collections.Generic.Dictionary with several keys like int, Guid,...

IPC Performance

WCF throughput buffered, streamed, dual channel with callback and so on

Threading Performance

Synchronization of theads with lock, ReaderWriterLockSlim, AutoResetEvent, ManualResetEvent, Semaphore and Mutex.

Last edited Feb 13, 2010 at 12:08 PM by ThomasMaierhofer, version 7