Advertisement
IdeaG

substr vs explode vs preg_match_all

Mar 19th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.29 KB | None | 0 0
  1. $time = microtime();
  2. $memory = memory_get_usage();
  3. for ($n = 0; $n<1000;++$n) {
  4.   $file = '<!doctype html><!--paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --><!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]--><!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"><![endif]--><!--[if IE 8]><html class="no-js lt-ie9" lang="en"><![endif]--><!--Consider adding a manifest.appcache: h5bp.com/d/Offline --><!--[if gt IE 8]><!--><html class="no-js" lang="en"><!--<![endif]--><head><meta charset="utf-8"><!--Use the .htaccess and remove these lines to avoid edge case issues.       More info: h5bp.com/i/378 --><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title></title><meta name="description" content=""><!--Mobile viewport optimized: h5bp.com/viewport --><meta name="viewport" content="width=device-width"><!--Place favicon.ico and apple-touch-icon.png in the root directory: mathiasbynens.be/notes/touch-icons --><link rel="stylesheet" href="css/style.css"><!--More ideas for your <head> here: h5bp.com/d/head-Tips --><!--All JavaScript at the bottom, except this Modernizr build.       Modernizr enables HTML5 elements & feature detects for optimal performance.       Create your own custom Modernizr build: www.modernizr.com/download/ --><script src="js/libs/modernizr-2.5.3.min.js"></script></head><body><!--Prompt IE 6 users to install Chrome Frame. Remove this if you support IE 6.       chromium.org/developers/how-tos/chrome-frame-getting-started --><!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em><a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]--><header></header><div role="main"></div><footer></footer><!--JavaScript at the bottom for fast page loading --><!--Grab Google CDN"s jQuery, with a protocol relative URL;fall back to local if offline --><script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script>window.jQuery || document.write("<script src="js/libs/jquery-1.7.1.min.js"></script>")</script><!--scripts concatenated and minified via build script --><script src="js/plugins.js"></script><script src="js/script.js"></script><!--end scripts --><!--Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site"s ID.       mathiasbynens.be/notes/async-analytics-snippet --><script>var _gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";s.parentNode.insertBefore(g,s)}(document,"script"));</script></body></html>';
  5.   $offset = 0;
  6.   $result=array();
  7.   do {
  8.     $start = strpos($file,'<!--',$offset);
  9.     $finish = strpos($file,'-->',$offset);
  10.     if ($start && $finish) {
  11.       $result[] = substr($file,$start+4,$finish-$start-4);
  12.       $offset = $finish+3;
  13.     }
  14.   } while ($start && $finish);
  15. }
  16. echo ' v1=>substr';
  17. echo ' count:'.sizeof($result);
  18. echo ' n:1000';
  19. echo ' time:'.(microtime()-$time);
  20. echo ' memory:'.(memory_get_peak_usage()-$memory);
  21. echo "<br/>";
  22. unset($time);
  23. unset($memory);
  24. unset($file);
  25.  
  26. $time = microtime();
  27. $memory = memory_get_usage();
  28. for ($n = 0; $n<1000;++$n) {
  29.   $file = '<!doctype html><!--paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --><!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]--><!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"><![endif]--><!--[if IE 8]><html class="no-js lt-ie9" lang="en"><![endif]--><!--Consider adding a manifest.appcache: h5bp.com/d/Offline --><!--[if gt IE 8]><!--><html class="no-js" lang="en"><!--<![endif]--><head><meta charset="utf-8"><!--Use the .htaccess and remove these lines to avoid edge case issues.       More info: h5bp.com/i/378 --><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title></title><meta name="description" content=""><!--Mobile viewport optimized: h5bp.com/viewport --><meta name="viewport" content="width=device-width"><!--Place favicon.ico and apple-touch-icon.png in the root directory: mathiasbynens.be/notes/touch-icons --><link rel="stylesheet" href="css/style.css"><!--More ideas for your <head> here: h5bp.com/d/head-Tips --><!--All JavaScript at the bottom, except this Modernizr build.       Modernizr enables HTML5 elements & feature detects for optimal performance.       Create your own custom Modernizr build: www.modernizr.com/download/ --><script src="js/libs/modernizr-2.5.3.min.js"></script></head><body><!--Prompt IE 6 users to install Chrome Frame. Remove this if you support IE 6.       chromium.org/developers/how-tos/chrome-frame-getting-started --><!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em><a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]--><header></header><div role="main"></div><footer></footer><!--JavaScript at the bottom for fast page loading --><!--Grab Google CDN"s jQuery, with a protocol relative URL;fall back to local if offline --><script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script>window.jQuery || document.write("<script src="js/libs/jquery-1.7.1.min.js"></script>")</script><!--scripts concatenated and minified via build script --><script src="js/plugins.js"></script><script src="js/script.js"></script><!--end scripts --><!--Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site"s ID.       mathiasbynens.be/notes/async-analytics-snippet --><script>var _gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";s.parentNode.insertBefore(g,s)}(document,"script"));</script></body></html>';
  30.   $file = str_replace(array('<!--','-->'),'<#>',$file);
  31.   $file = explode('<#>',$file);
  32.   $result=array();
  33.   for ($i=1;$i<sizeof($file);$i+=2) {
  34.     $result[] = $file[$i];
  35.   }
  36. }
  37. echo ' v2=>explode';
  38. echo ' count:'.sizeof($result);
  39. echo ' n:1000';
  40. echo ' time:'.(microtime()-$time);
  41. echo ' memory:'.(memory_get_peak_usage()-$memory);
  42. echo "<br/>";
  43. unset($time);
  44. unset($memory);
  45. unset($file);
  46.  
  47. $time = microtime();
  48. $memory = memory_get_usage();
  49. for ($n = 0; $n<1000;++$n) {
  50.   $file = '<!doctype html><!--paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --><!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]--><!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"><![endif]--><!--[if IE 8]><html class="no-js lt-ie9" lang="en"><![endif]--><!--Consider adding a manifest.appcache: h5bp.com/d/Offline --><!--[if gt IE 8]><!--><html class="no-js" lang="en"><!--<![endif]--><head><meta charset="utf-8"><!--Use the .htaccess and remove these lines to avoid edge case issues.       More info: h5bp.com/i/378 --><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><title></title><meta name="description" content=""><!--Mobile viewport optimized: h5bp.com/viewport --><meta name="viewport" content="width=device-width"><!--Place favicon.ico and apple-touch-icon.png in the root directory: mathiasbynens.be/notes/touch-icons --><link rel="stylesheet" href="css/style.css"><!--More ideas for your <head> here: h5bp.com/d/head-Tips --><!--All JavaScript at the bottom, except this Modernizr build.       Modernizr enables HTML5 elements & feature detects for optimal performance.       Create your own custom Modernizr build: www.modernizr.com/download/ --><script src="js/libs/modernizr-2.5.3.min.js"></script></head><body><!--Prompt IE 6 users to install Chrome Frame. Remove this if you support IE 6.       chromium.org/developers/how-tos/chrome-frame-getting-started --><!--[if lt IE 7]><p class=chromeframe>Your browser is <em>ancient!</em><a href="http://browsehappy.com/">Upgrade to a different browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">install Google Chrome Frame</a> to experience this site.</p><![endif]--><header></header><div role="main"></div><footer></footer><!--JavaScript at the bottom for fast page loading --><!--Grab Google CDN"s jQuery, with a protocol relative URL;fall back to local if offline --><script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script>window.jQuery || document.write("<script src="js/libs/jquery-1.7.1.min.js"></script>")</script><!--scripts concatenated and minified via build script --><script src="js/plugins.js"></script><script src="js/script.js"></script><!--end scripts --><!--Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site"s ID.       mathiasbynens.be/notes/async-analytics-snippet --><script>var _gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";s.parentNode.insertBefore(g,s)}(document,"script"));</script></body></html>';
  51.   preg_match_all('/<!--(.+?)-->/',$file,$result);
  52.   $result = $result[1];
  53. }
  54. echo ' v3=>regex';
  55. echo ' count:'.sizeof($result);
  56. echo ' n:1000';
  57. echo ' time:'.(microtime()-$time);
  58. echo ' memory:'.(memory_get_peak_usage()-$memory);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement