Related Posts Plugins performace – measured

Ernest Marcinko Blog, Reviews 15 Comments

Last week I found out that many WordPress hosts ban many of the most popular plugins from their users. Most of these plugins are Related Posts plugins. I guess they are afraid of excessive database usage. However I myself was interested in this topic as I already made one related posts plugin myself, called Related Posts Lite.

Before you continue, please note, that this is only a server side performance review on one single server. This might differ on any server with different plugins and configurations. In this experiment every plugin is treated equally in terms of layout and usability – thus the review only takes the performance into account, nothing else.

My method

I know, that most of you would say, that I should have used the P3 performance profiler plugin, but it simply felt more exciting to create my own method, which I know it won't interfere with the results. I made a very simple PHP class, which is inserted into the themes functions.php file. That's it. It outputs then some basic data to the bottom of the screen in a table format.

My custom profiler output

My custom profiler output

You can get the class code here: http://pastebin.com/7vRrGAKp

A few lines of CSS for the exact same table output: http://pastebin.com/sfKnr9rH

Test environment

For the test environment a made a fresh new WordPress install on my local test server and loaded up a few things first.

  • I've installed a few popular plugins, namely: Akismet, BBPress, Jetpack, WordPress SEO and Shortcodes Ultimate
    Why? Simply because most of the WordPress sites use at least 4-5 plugins, so it feels more realistic.
  • I've made 1000+ (1040 precisely) dummy posts. Some with thumbnails and real content. That's a pretty nice amount to start with.
Initialization

Before anything, I picked a random post and measured the average performance of the server by refreshing the page 20 times.

This average tare performance will be starting point to compare the plugins with. If the class I created is instantiated with the “core” string paramater, it stores the upcoming data as “default”, “tare”, “core” data – thus the environment speed without any further plugins activated. Thus the initialization is the following:

$o = new measureUsage('core');
What's measured, and how?

The script outputs the:

  • Load time – the time the plugin ran
  • Memory consumption – the peak memory consumption of the plugin
  • PHP ticks – this actually won't tell much, an approximation of the script length
  • Database queries – the number of queries forwarded to the mySql database

However, the most important factor in these tests is the Load time and the number of Database queries. This test however can't measure the server usage – one needs more powerful tools for that.

Steps of the test:

  • Picking a random page
  • Activating the plugin to be tested
  • Configuring the plugin to show thumbnails and 20 related posts
  • Modifying the class code as following:
    $o = new measureUsage('some_phrase_which_identifies_the_plugin');
    
  • Sampling: Refreshing the picked page 20 times

Why the same page 20 times you ask? It is because I wanted to see how the plugins react to an initial and repetitive page view. I was expecting that some of the plugins will use a cache after the first page view, so the repetitive page views will be faster.

Plugins tested

This test was performed on the following plugins:

All of these plugins are FREE and accessible via the wordpress plugin repository. Most of these are banned on many wordpress hosts, let's se why.

Output

For the output I picked two very important calculations.

  • The overall average plugin load time, relative to the core load time
  • The average plugin load time after the initial hit (thus after the first page load)

Both values are in per cents, indicating how much of the page load time is taken by the plugins – the lower the better.

Results

Let's see how the test went. Some results are quite interesting.

Core performance

As I said before, first things first, measure the core performance. After doing the 20 refresh pages I got the following results:

Core performance

Core performance

So the average page load is 0.179 seconds, the memory consumption is 17.5 mb roughly and 67 database queries were executed. These values will be subtracted from the ones the program is going to measure with each related posts plugin activated.

Yet Another Related Posts Plugin (YARPP)

This plugin is very very popular. It's been around for over 4 years now. Let's take a look at the values.

yarpp

Yet another related posts plugin

Evaluation
  • Stable, low query count (11) – but since the first pageload has the same query count as the others, it means there is no cache
  • Decently low load time and memory consumption
  • ~20% average plugin load
  • I would rate this plugin STABLE and FAST
  • I would recommend it on websites with medium to high bounce rates (lots of unique visitors, less page views)

 

Related Posts Lite

I will try to be as impartial as I can with my own plugin 😉

Related Posts Pro

Related Posts Pro

Evaluation
  • Very low average query count (4)
  • The average plugin load is similar to YARPP (20%), but because of caching the plugin load is ~6.13% on repetitive pageloads
  • ..because of that the first hit takes too much time
  • The peak memory usage is also lower then YARPP
  • I would say the plugin is STABLE, but SLOWER on first page hit, yet EXTREMELY FAST on repetitive page hits
  • I would recommend it to websites with very low to medium bounce rates (lots of page views)

 

Related Posts (by Zemanta)

This is also a very well known and high rated plugin. Let's see how it performs.

Related Posts (by zemanta)

Related Posts (by zemanta)

Evaluation
  • Very high database query count!! It uses a cache, yet the average query count is ~48
  • The load time and the memory consumption is acceptable.
  • The plugin load is much higher, than it was with the previous plugins ~31%
  • … and it's not much lower on repetitive page loads either (despite of the caching)
  • I would say the plugin is STABLE but it's SLOWER and uses TOO MANY QUERIES
  • I would still recommend using it, but the high number of queries indicates it needs optimizations

 

Contextual Related Posts

This plugin has surprised me a lot. Well done.

Contextual Related Posts

Contextual Related Posts

Evaluation
  • The initial page load uses 87 queries and it's a bit slow, but highly acceptable
  • Repetitive page loads are extremely fast and only uses ONE query!
  • The average plugin load is also extremely low ~9.1%
  • ..and the repetitive is even lower ~5.2%
  • This plugin looks STABLE and EXTREMELY FAST in almost every situation, well done!
  • Highly recommended!

 

Easy Related Posts

I actually measured this plugin twice, because I though the results were inaccurate, unfortunately not.

Easy Related Posts

Easy Related Posts

Evaluation
  • Very high average load time and high memory consumption
  • Very high plugin load percentage ~56.2%
  • Definitely no caching implemented
  • However the query count is decent
  • I would say this plugin is STABLE but VERY SLOW, it needs optimizations
  • I would rather recommend using an alternative

 

BestWebSoft – Relevant

This team has got some nice plugins on the market. Let's see how they perform.

BestWebSoft - Related

BestWebSoft – Related

Evaluation
  • Very similar results to YARPP with the ~22% average plugin load
  • Acceptable query count, but definitley does not use a cache
  • Low memory usage
  • I would say this plugin is STABLE and FAST
  • I would recommend it

Conclusion

Every plugin was able to handle the test environment one way or the other. For better view, here is a performance chart of the measured values (the lower the numbers, the better):

Performance Chart

Performance Chart

Overall

This is my honest opinion of the plugin performances:

Please note again, that these performances are based on this method. Different test environment and a different method might give you completely different results. This is just an insight based on my method.

Sources and Stuff

Ernest Marcinko

WordPress developer, javascript enthusiast, photoshop clicker and the founder of wp-dreams.com

Stay connected

Related Posts
Filter by
Post Page
Tutorials Wordpress Hosting Blog Testing Commercial Plugins Wordpress
Sort by

Using Ajax in your WordPress plugins

2014-04-14 13:23:29
admin

18

Saving space automatically – Beginners guide to Digital Ocean

After a while, you will notice an exponential growth of used space, without even copying anything to it. How
2016-05-06 09:24:05
admin

8

From XAMPP to Vagrant WordPress

2016-01-05 19:58:17
admin

8

Swap file – Beginners guide to Digital Ocean

If you reached this step, your server is up and running flawlessly. However after gaining some traffic it will run out
2015-01-21 15:48:02
admin

8

Comments 15

    1. Post
      Author
        1. Post
          Author
  1. Robin

    +1 for jetpack but just for curiosity

    unfortunately jetpack is such a monstrosity of a plugin that no one in their right mind who is aware of performance issues or optimization would ever use it

  2. Pingback: Weekly Roundup of Web Design and Development Resources: November 6, 2014

  3. Ben Kemp

    Hi Ernest

    I enjoyed your testing article, nicely done!

    I’ve spent much of the week optimising a high traffic (100k visitors per month) website for page load speeds. As your article shows, plugins use server resources in different ways. Some have a severe negative impact on both site and shared server performance. There are several Related Posts plugins that have been banned by some hosting companies because of that…

    When optimising page load times, both overal page sizes and the total number of queries or requests contribute to the speed ratings. GT-Metrix.com provides an excellent overview of page size, load speed, requests, and gives Page Speed and YSlow scores.

    In this real world example, even the footprint of externally indexed and served related posts can exceed 300k of page size (Shareaholic). Jetpack with only Related Posts and social media “Like” buttons activated exceeded 300k and generated lots of additional requests.

    I found that the absolute BEST combination of Related Posts and Like buttons was your excellent and feature-rich Related Posts Lite plugin in conjunction with the Social Media Feather plugin. The two of them barely registered any increase in page size or requests!!!

    As an example, the asian-recipe.com/tibet/tibetan-meat-dishes.html page load stats from GT Metrix is now;
    – Page load time: 2.59s
    – Total page size: 294KB
    – Total number of requests: 23

    The site has 32 active plugins running… When I started optimising load times on Monday, page size was 2.5 Mb and 137 requests were being generated! It was using WP Super Cache plugin with mod_rewrite option, and preload activated. The improvements are primarily due to using;
    – P3 Plugin Profiler to identify the greedy plugins
    – replacing them with slimmer plugin options
    – replacing WP Super Cache with W3 Total Cache

    For more information, there’s a new post on my site at:
    http://www.theseoguy.co.nz/how-to-speed-up-website-page-load-time/

  4. Gretchen Louise

    I really appreciate reading this thorough report. I just finished a review of many of the most popular related posts plugins (in light of the fact that nRelate is being discontinued), but don’t have the knowledge for running those kinds of tests. I really appreciate your attention to detail. I just hope you add performance reports on a few more, now that everyone’s searching for the best related post plugin option (again).

  5. Adam T

    Hi Ernest,

    Would you consider trying out Content.ad as well? Gretchen (above) included our plugin in her review as well, and I would be interested in your thoughts on how it performs. All site indexing takes place on proprietary servers, and the widget itself loads asynchronously. If you’re interested, you can find our plugin here: https://wordpress.org/plugins/contentad/. Thanks!

    Adam T
    Content.ad

    1. Post
      Author
      Ernest Marcinko

      Well, they have a valid point on one side. The initial query takes 87 database queries. That is high indeed, especially if someone has a site with 1000+ posts. On the other hand handling the same page to another visitor only takes 1 query, which is impressive.

      I’m not sure if wpengine will allow any related posts plugins. Each and every related posts plugin needs certain amount of resources to serve proper results. The more relevant results, the more database sensitive the queries get – there is no way around this.

      I have some very bad experiences with wpengine users. Don’t get me wrong, they are offering a nice service for those who want a one-click solution, but the price is the extremely limited resources. Their customers tend to buy premium plugins from various vendors, but half of these won’t work properly, because of the server limitations. Same goes with dedicated hosts as well.

      For instance, I moved from a certain big host last week. I was paying 40$/mo for a 2 core 2gb ram managed VPS service and it was having issues on a monthly basis. The price sounds fair, but the managment sofware (CPanel/WHM) took too many resources. Then I moved to Digital Ocean. Big change, lot of pain, because it’s unmanaged (meaning I have to install everything from a SSH command line). Took me a day and a half to get it right the first time. However the current server specs are 1 Core 1gb ram and it’s running 3 times faster than the other one, and the price is only 10$/mo.

      Bottom line, please don’t expect much from any plugin on wpengine. They have limited resources in exchange for an easy to use service. Majority of plugins needs more resources (freedom) than that. I wouldn’t be surprised if they banned Related Posts Lite as well in the near future.

  6. Pingback: Whose wordpress related posts plugin is fastest – Wordpress Related Posts plugins Performance Tests and switching from Zemanta Wordpress Plugin to Contextual Related Posts | Share Knowledge Liner

  7. Ajay

    Hi, I am the author of Contextual Related Posts. Thank you for your review and the performance stats. Contextual Related Posts has an inbuilt cache which is why the performance leaps on reloads. If you make a post and visit it yourself, there is a high possibility that visitors won’t see the initial pageload at all!

    Regarding WP Engine, they have banned this an many plugins because of the FULLTEXT index being created. They remove the FULLTEXT index automatically, so the plugin wouldn’t work.

    I have been informed (but not verified) that you could request a change to a server that runs mySQL 5.6 which using innoDB and has FULLTEXT support.

  8. M Teguh A Suandi

    Hi Ernest,

    I recently published my related content plugin here https://wordpress.org/plugins/sebar/. It has a lot of cool feature like:

    1. Mobile responsive with support swipe and mouse drag
    2. Browse YouTube videos from plugin dashboard
    3. Integration with Google Feed Finder
    4. Display related contents from internal WP Post based on (individual post/page, tag, category, author and custom query)
    5. Analytics
    6. Custom landing page
    7. Widget
    8. More

    Hopefully it can help someone out there.

    Thank you for sharing the code, I think I would like to test my own plugin.

    Regards,
    Teguh

Leave a Reply

Your email address will not be published. Required fields are marked *