From time to time, I run one of these commands:
openload http://127.0.0.1:8080 NN ab -n 2000 -c NN http://127.0.0.1:8080/while running xsp in the directory where the tests are installed. They hit the index.aspx page from xsp tests. The page is quite simple, but the number of requests per second keeps going up, sometimes down, every time an improvement in the runtime or the class libraries affects System.Web or xsp itself. More than a year ago, that number was around 30 req./s but now...:
| When | Request per second |
|---|---|
| More than a year ago |
~30 |
| Before 2005-04-12 |
~65 |
| 2005-04-13 |
~105 |
| 2005-05-08 |
~155 |
This is using one single client. Increasing the number of clients or using ab keep-alive option might make the results even better.
What happened on 2005-04-12? That day, Dick's removal of the io-layer daemon went into svn HEAD. This was a big performance boost for many areas in Mono.
Today Ben was playing with a test case that requests the Add method from TestService.asmx and he found out that:
- We were setting Thread.CurrentCulture from places where it was not needed
- NameObjectCollectionBase was using the slow CaseInsensitiveHashCodeProvider.Default and CaseInsensitiveComparer.Default instead of their DefaultInvariant counter parts, which are much faster
- Some arrays we allocate to buffer the response could be kept around for reuse by subsequent requests.
Together, the fixes for those issues made Ben's test go up from ~335 r/s to ~375 r/s in my computer.