Skip to content

Instantly share code, notes, and snippets.

@khromov
Last active August 29, 2015 14:13
Show Gist options
  • Save khromov/9a16e5a2bb5f3c05f4dc to your computer and use it in GitHub Desktop.
Save khromov/9a16e5a2bb5f3c05f4dc to your computer and use it in GitHub Desktop.
capital_P_dangit performance impact tester
<?php
/*
Plugin Name: capital_P_dangit performance test
Plugin URI:
Description: Use shortcode on any page: [capital_P_dangit_performance count="10000"]
Version: 1.0
Author: khromov
Author URI: http://snippets.khromov.se
License: GPL2
*/
/* Apply capital_P_dangit filter to our benchmarking function */
add_filter('capital_P_dangit_performance_filter', function($text)
{
return capital_P_dangit($text);
});
add_shortcode('capital_P_dangit_performance', function($attr, $content)
{
/* Fill upp the post content */
$post_title = 'Lorem ipsum dolor sit amet';
$post_content = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin accumsan dolor ante, et lobortis nunc elementum eget. Pellentesque dapibus nisi a elit tempor porta at quis leo. Duis malesuada tellus quis est sollicitudin ullamcorper. Proin placerat ante et condimentum tincidunt. Vivamus facilisis et felis mollis hendrerit. Curabitur aliquet viverra pretium. Fusce accumsan ultrices condimentum. Nulla nulla arcu, maximus ut lobortis congue, condimentum ut arcu. Nulla feugiat eget sapien luctus maximus. Morbi et scelerisque lacus.
Cras in eros posuere, ultricies enim in, porta diam. Vestibulum at vehicula ligula. Praesent nec pellentesque eros. Vestibulum in viverra neque. Mauris vel laoreet metus. Pellentesque at eleifend tellus. Vestibulum faucibus massa vitae nulla consequat, sed sollicitudin tortor condimentum. Sed dictum mi erat. Nunc gravida ante non nibh ornare, sit amet semper ante dictum. Sed sit amet rhoncus sapien. Pellentesque interdum lorem ut ipsum maximus, interdum tempus massa sollicitudin. Pellentesque tempor leo sit amet arcu pellentesque, in tempor metus tempus.
Nulla rutrum, mi eget volutpat hendrerit, risus dui semper nibh, a gravida metus nulla nec arcu. Sed ullamcorper ipsum at lectus efficitur viverra. Maecenas quis nisi vel dui consequat laoreet eget nec tortor. Proin sed fringilla ligula, nec vehicula tellus. Vestibulum sit amet leo vel nibh consectetur tempus vitae sed erat. Morbi a laoreet dolor. Nulla luctus id mi a mattis. Quisque eget placerat arcu. Nunc ac diam ornare, rhoncus enim ut, tristique felis. Donec elit sem, venenatis non dignissim eu, fringilla ac mi. In in mattis magna. Fusce cursus sed magna sit amet molestie.
Aliquam egestas sapien sed sollicitudin auctor. Proin nibh dolor, finibus at suscipit sit amet, mollis quis elit. Aenean non finibus nisl. Etiam et turpis porta, convallis velit porttitor, luctus quam. Suspendisse sit amet vestibulum lacus. Pellentesque non orci non dolor vestibulum hendrerit nec eu turpis. Nullam gravida nunc nec ex mattis commodo.
Maecenas dolor arcu, semper eu nisi vel, consequat semper purus. Sed quis ipsum non arcu rhoncus posuere. Praesent cursus consequat orci ac rutrum. Cras in eros molestie, faucibus nisl vitae, ornare dui. Donec posuere dapibus nulla at luctus. Donec euismod finibus felis, dictum consequat justo maximus vitae. Nunc vel nunc euismod, egestas justo vel, condimentum nisi. Sed bibendum mollis elit, ac viverra sem consectetur non. Nulla suscipit finibus est pellentesque scelerisque. Fusce in erat nisi. Phasellus mattis consequat ultrices. Donec volutpat interdum dignissim. ';
$count = isset($attr['count']) ? (int)$attr['count'] : 10000;
timer_start();
/* Run benchmark */
for($i = 0; $i < $count; $i++)
{
$test = apply_filters('capital_P_dangit_performance_filter', $post_content);
}
//Calculate the elapsed time in milliseconds
$performance = ((float)str_replace(',','.', timer_stop(0, 5)))*1000;
//Calculate the mean performance per call
$performance_mean = $performance/($count);
$performance_mean_real = $performance_mean*2;
echo "Applied capital_P_dangit filter {$count} times in {$performance} ms. That's a mean of: {$performance_mean} ms / call, or {$performance_mean_real} / post (2 calls, title and content)";
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment