XSP Performance improvements

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.

This is a personal web page. Things said here do not represent the position of my employer.