Jay Blanchard wrote:
[snip]
Tipp: Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they
will be faster. [/snip]
This brings up a good point. Just exactly how much faster would one be over another in this small example? How big would the string have to be to note any degredation of performance?
I wrote a small script to test this:
100000 Searches in a rather small string took 0.38s with strpos() and 0.55s with preg_match() While this is not too much in absolute time preg_match uses 145% of the strpos time.
You can play with the script:
<?php
$haystack="This is a string. It is not really long, but I hope it is long enough for this test ;-)";
$needle="test";
function getmicrotime()
{
$time=microtime();
list($usec, $sec) = explode(" ", $time);
return ((float)$usec + (float)$sec);
}$t1=getmicrotime();
for($i=0;$i<100000;$i++)
$pos=strpos($haystack,$needle);
$t2=getmicrotime();
for($i=0;$i<100000;$i++)
preg_match("/".$needle."/",$haystack);
$t3=getmicrotime();printf("Time for strpos: %1.2f s<br>",$t2-$t1);
printf("Time for preg_match: %1.2f s<br>",$t3-$t2);
?>Oliver
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php

