Benchmarking WordPress plugins

published Jun 09, 2006, last modified Jun 26, 2013
Benchmarking WordPress plugins
KB/s depending on enabled plugins

While doing routine tuning and checking of my weblog, I discovered a rather nasty slowdown with WordPress page generation. Taking the "scientific" route, I deactivated nearly all non-essential plugins in my Supercharged weblog (more than 40) and proceeded to activate them one by one, interspersing activations with ApacheBench tests.

Really quick conclusions:

  • WordPress (with the baseline plugins installed) is slow. On my server (not exactly the fastest thing in the planet, but dedicated to Web and database serving, and not bound by swapping or memory limits), it can't pipe more than 1.5 front page views per second. I don't think the load from ApacheBench accounts for more than 10% of the CPU usage.
  • Do not install My Tube under any circumstances. Further investigation is pending.
  • These plugins add negligible amounts of overhead. None of the plugins (except for My Tube) added detectable performance losses.
  • bsuite seems to introduce a small slowdown.

The chart above shows the (rather unscientific, but effective) results of my short benchmark, in a nice bar chart (the taller, the better). This table represents the average KB/s for page generation after activating each plugin. Note that plugins were never deactivated after being activated (except for My Tube, which I kicked out of the circuit). Thus, in a perfectly repeatable test scenario, you should see a ladder in the bar chart. Since you don't see one, I can conclude that stacking my 40 plugins introduces negligible page generation performance overhead.

Caveats:

  • I started with a plugin baseline of Akismet, Fold Page List, Fold Category List, PHP Markdown Extra, Redirectify, Software shop for WordPress, del.icio.us widget, Sidebar Widgets, WordPress allow dashes, WordPress AutoLink, Permalink redirect. There's simply no way I can afford to turn these off in my live site.
  • I hit my site with 100 requests using ab -n 1000 http://rudd-o.com/ executing on the Web host. Whenever I saw dramatic performance drops, I checked to see whether the load average was high, then waited for all other running processes to finish, and then re-tested
  • As you can see, I only tested front page views.
  • The base WordPress installation is a vanilla 2.0.3 + bug fixes setup. No caching options were modified or set.
  • This is not a scientific test. Standard deviation is not reported. Since I was only looking for major performance drops, minor differences (+/- 0.1 requests per second) can be accounted for the fact that tests were performed on the live site. Yes, that includes apparent "performance boosts" with some plugins active.
  • Plugins that add template tags or widgets were added to the template/widget configuration for accurate representation.
  • This benchmark does not measure page responsiveness or ancillary object loading times (JavaScript, images)

Here is the collected data:

baseline: Akismet, Fold Page List, Fold Category List, PHP Markdown Extra, Redirectify, Software shop for WordPress, del.icio.us widget, Sidebar Widgets, WordPress allow dashes, WordPress AutoLink, Permalink redirect:
Requests per second: 1.56/s (mean)
Time per request: 642.467 ms (mean)
Transfer rate: 50.06 KB/s received

add: Canary Comment
Requests per second: 1.54/s (mean)
Time per request: 649.238 ms (mean)
Transfer rate: 52.48 KB/s received

add Cache-Flush
Requests per second: 1.58/s (mean)
Time per request: 634.240 ms (mean)
Transfer rate: 53.72 KB/s received

add Creative Commons Configurator
Requests per second: 1.54/s (mean)
Time per request: 648.789 ms (mean)
Transfer rate: 54.52 KB/s received

add: Digg This
Requests per second: 1.47/s (mean)
Time per request: 678.475 ms (mean)
Transfer rate: 52.13 KB/s received

add: Days Since Birth and Gravatars
Requests per second: 1.49/s (mean)
Time per request: 669.963 ms (mean)
Transfer rate: 52.82 KB/s received

add: Inline ajax more
Requests per second: 1.67/s (mean)
Time per request: 597.525 ms (mean)
Transfer rate: 61.60 KB/s received

add: In Series
Requests per second: 1.41/s (mean)
Time per request: 707.612 ms (mean)
Transfer rate: 52.02 KB/s received

add: iG:CoComment
Requests per second: 1.61/s (mean)
Time per request: 621.901 ms (mean)
Transfer rate: 59.19 KB/s received

add: Bread Crumb Trail Generator
Requests per second: 1.60/s (mean)
Time per request: 623.195 ms (mean)
Transfer rate: 59.47 KB/s received

add: LMB^Box FilePress
Requests per second: 1.55/s (mean)
Time per request: 646.917 ms (mean)
Transfer rate: 57.29 KB/s received

add: LMB^Box Comment Quicktags
Requests per second: 1.73/s (mean)
Time per request: 577.145 ms (mean)
Transfer rate: 64.21 KB/s received

add: My Tube
Requests per second: 0.49/s (mean)
Time per request: 2025.577 ms (mean)
Transfer rate: 18.39 KB/s received (at this point, I'm disabling My Tube)

remove: My Tube
Requests per second: 1.71/s (mean)
Time per request: 585.946 ms (mean)
Transfer rate: 63.25 KB/s received

add: Optimal Title
Requests per second: 1.49/s (mean)
Time per request: 671.295 ms (mean)
Transfer rate: 55.21 KB/s received

add: Related Posts
Requests per second: 1.73/s (mean)
Time per request: 577.798 ms (mean)
Transfer rate: 64.14 KB/s received

add: Taragana's Del.icio.us mp3 Player Plugin
Requests per second: 1.55/s (mean)
Time per request: 646.751 ms (mean)
Transfer rate: 57.41 KB/s received

add: FancyTooltips
Requests per second: 1.51/s (mean)
Time per request: 660.859 ms (mean)
Transfer rate: 56.59 KB/s received

add: Recent Comments (my edition adds a 'Recent comments with excerpts' widget)
Requests per second: 1.51/s (mean)
Time per request: 664.122 ms (mean)
Transfer rate: 58.38 KB/s received

add: Sociable
Requests per second: 1.53/s (mean)
Time per request: 652.300 ms (mean)
Transfer rate: 59.62 KB/s received

add: Subscribe me
Requests per second: 1.52/s (mean)
Time per request: 659.224 ms (mean)
Transfer rate: 61.01 KB/s received

add: Search Meter
Requests per second: 1.49/s (mean)
Time per request: 670.161 ms (mean)
Transfer rate: 60.02 KB/s received

add: Search Reloaded
Requests per second: 1.43/s (mean)
Time per request: 699.615 ms (mean)
Transfer rate: 57.49 KB/s received

add: Text Link Ads
Requests per second: 1.43/s (mean)
Time per request: 699.958 ms (mean)
Transfer rate: 57.46 KB/s received

add: WP Lightbox 2
Requests per second: 1.41/s (mean)
Time per request: 706.736 ms (mean)
Transfer rate: 57.67 KB/s received

add: Write Post Find and Rudd-O's Wordspew
Requests per second: 1.44/s (mean)
Time per request: 695.128 ms (mean)
Transfer rate: 59.01 KB/s received

add: BlogSpy for WordPress
Requests per second: 1.45/s (mean)
Time per request: 688.703 ms (mean)
Transfer rate: 59.66 KB/s received

add: XFish Meta
Requests per second: 1.40/s (mean)
Time per request: 714.832 ms (mean)
Transfer rate: 57.57 KB/s received

add: WP-SlimStat
Requests per second: 1.41/s (mean)
Time per request: 708.787 ms (mean)
Transfer rate: 58.06 KB/s received

add: AutoMeta
Requests per second: 1.38/s (mean)
Time per request: 725.395 ms (mean)
Transfer rate: 56.73 KB/s received

add: bsuite (my edition has some bug fixes by me)
Requests per second: 1.21/s (mean)
Time per request: 827.565 ms (mean)
Transfer rate: 49.72 KB/s received