Topics: Developer Forum, Project Management Forum, User Forum
Feb 17, 2007 at 1:37 AM
Has anyone done any speed testing of IIRF? The mothership says "reasonably fast", but I'm wondering exactly what kind of penalty it incurs.

Surely someone has done at least rudimentary testing. What did you find?

I'm looking to roll this out to a production machine, but before I do, I want to know what I'm getting into...


- Bryan
Feb 18, 2007 at 10:48 PM
Ok folks. Since I couldn't find any speed reports, and didn't get a response here for a few days, I decided to run my own tests and share them here.

The test was far from thorough, but hopefully it's at least representative of what IIRF can do.


To limit the variables, I ran my test on a local network instead of over the Internet. Here was the setup:

  • Server: Pentium III, 800Mhz 512Mb RAM
  • OS: Windows Small Business Server 2003
  • Network: Client connects to Server over 802.11g


The goal of the rewrite is to take URLs like this:


...and rewrite them like...


Here is the INI file used:

RewriteLog  c:\temp\iirfLog.out
RewriteLogLevel 0
MaxMatchCount 10
RewriteRule ^/[c|p|s][A-Z0-9\-]+/([\w\-\%]+)\.(gif|jpg|png|css|js|ico)$ /$1.$2 [I,L]
RewriteRule ^/c[A-Z0-9\-]+p[A-Z0-9\-]+/([\w\-\%]+)\.(gif|jpg|png|css|js|ico)$ /$1.$2 [I,L]
RewriteRule ^/c([A-Z0-9\-]+)p([A-Z0-9\-]+)/[\w\-\%]+$ /Product.asp?prodcode=$2&catcode=$1  [I,L]
RewriteRule ^/p([A-Z0-9\-]+)/[\w\-\%]+$ /Product.asp?prodcode=$1  [I,L]
RewriteRule ^/c([A-Z0-9\-]+)/[\w\-\%]+$ /Category.asp?catcode=$1 [I,L]
RewriteRule ^/s([A-Z0-9\-]+)/[\w\-\%]+$ /Screen.asp?screen=$1 [I,L]

As you can see, I'm not only rewriting the URL, but since we end up looking like we're several layers deep in subdirectories, I'm also rewriting the URLs for all of the assets (images, javascript, CSS, etc.). This means that one request will actually have several rewrites happening, not just one.

To get the best sample set, I made 1,000 requests with IIRF installed and the call going to the rewritten URL, and 1,000 requests with IIRF not installed and the current URL. When I ran less than 1000 requests (100 or just 10), there was such a small time difference that it wasn't really measurable in seconds, so I had to go higher. 1,000 was a nice round number.

To further rule out random things from skewing the results, I ran the test 5 times and measured the results as a total. 5,000 with IIRF versus 5,000 without.


Without IIRF
Run 1: 259 seconds
Run 2: 249 seconds
Run 3: 255 seconds
Run 4: 258 seconds
Run 5: 261 seconds

Total: 1,282 seconds
Avg: 256.4 seconds

Run 1: 256 seconds
Run 2: 262 seconds
Run 3: 269 seconds
Run 4: 269 seconds
Run 5: 265 seconds

Total: 1,321 seconds
Avg: 264.2 seconds

IIRF Cost: 3.04%

There you have it. IIRF adds about 3% to the processing time for a large number of requests.