[wp-trac] [WordPress Trac] #47514: Change priority of make_clickable callback to boost performance

WordPress Trac noreply at wordpress.org
Wed Jun 12 18:58:25 UTC 2019


#47514: Change priority of make_clickable callback to boost performance
-------------------------+------------------------------
 Reporter:  olliverh87   |       Owner:  (none)
     Type:  enhancement  |      Status:  new
 Priority:  normal       |   Milestone:  Awaiting Review
Component:  Comments     |     Version:  5.2.1
 Severity:  minor        |  Resolution:
 Keywords:               |     Focuses:  performance
-------------------------+------------------------------

Comment (by olliverh87):

 Hi @SergeyBiryukov ,

 thank you so much for your feedback! I did not think of this scenario,
 please let me apologize.

 It seems that {{{force_balance_tags}}} does a great job at producing
 mostly valid markup, so to address the issue with the test case you
 showed, it seems to be the easiest solution to make a trade off and have
 make_clickable run after the other filters (such as {{{convert_smilies}}}
 but run before {{{force_balance_tags}}}.

 I added the following snippet to the {{{functions.php}}} file of my active
 theme on my test-setup to do some performance measurements:

 {{{#!php
 <?php
 add_action('init', function() {

     $comment_string = "x " . str_repeat("ftp.x ", 10916);

     // 1st test, run with default configuration
     $default_time = microtime(true);
     apply_filters('comment_text', $comment_string);
     $default_time = microtime(true) - $default_time;


     //2nd test, run with changed priorities (make_clickable before
 force_balance_tags)
     remove_filter('comment_text', 'make_clickable', 9);
     add_filter('comment_text', 'make_clickable', 24);
     $changed_time = microtime(true);
     apply_filters('comment_text', $comment_string);
     $changed_time = microtime(true) - $changed_time;

     // echo results
     echo "Default configuration runtime: " . $default_time . " secs" .
 "<br />";
     echo "Changed configuration runtime: " . $changed_time . " secs" .
 "<br /> <br />";


     exit;

 });
 }}}

 Running it for a 100 times showed this modification increases performance
 by ~23% on average, while still producing valid markup as addressed with
 your test case. What do you think?

 The diff would then become:


 {{{
 --- a.php       2019-06-09 22:47:58.744746903 +0200
 +++ b.php       2019-06-09 22:49:00.080742874 +0200
 @@ -190,7 +190,7 @@

  add_filter( 'comment_text', 'wptexturize' );
  add_filter( 'comment_text', 'convert_chars' );
 -add_filter( 'comment_text', 'make_clickable', 9 );
 +add_filter( 'comment_text', 'make_clickable', 24 );
  add_filter( 'comment_text', 'force_balance_tags', 25 );
  add_filter( 'comment_text', 'convert_smilies', 20 );
  add_filter( 'comment_text', 'wpautop', 30 );
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/47514#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list