Im using a regular expression, to get all urls from a file.
When using it on the webserver, it processes a 25kb html file
about 0.25 seconds (PIII 350, 128mb ram, linux 2.2.13-7mdk, php 3.0.12).

When i try the same on my machine (Celeron 300A, 192mb ram.), it does it
about 14-17 seconds, which is about 60-70 times slower.
Tested it on:
redhat 7.2, php 4.1.1 - 16 seconds
windows 98, php 4.1.1 - 14 seconds
windows 98, php 3.0.12 - 17 seconds.

The machine speed differences arent that big, especially considering
that other(simpler) regexps run at the almost the same speed (20-30%
difference).

Where can this enourmous speed difference come from

Regexp im using is following:

while
(eregi("(<frame[^>]*src[[:blank:]]*=|href[[:blank:]]*=|http-equiv=['\"]refresh['\"]
*content=['\"][0-9]+;url[[:blank:]]*=|window[.]location[[:blank:]]*=|window[.]open[[:blank:]]*[(])[[:blank:]]*[\'\"]?(([[a-z]{3,5}://(([.a-zA-Z0-9-])+(:[0-9]+)*))*([:%/?=&;\\,._a-zA-Z0-9-]*))(#[.a-zA-Z0-9-]*)?[\'\"
]?",$file,$regexp))
    {
    print $regexp[2]."\n";
    $file=str_replace($regexp[0], "", $file);
    }

Anyone care to test it on there machine? Full code (20 lines) with
timing function would be:
<?
function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
    }
//change to some html file around 25kb in size
$lines = @file('test.html');
if (is_array($lines))
    {
    while (list($id,$line) = each($lines))
           $file .= $line;
   }

$start_time=getmicrotime();

while
(eregi("(<frame[^>]*src[[:blank:]]*=|href[[:blank:]]*=|http-equiv=['\"]refresh['\"]
*content=['\"][0-9]+;url[[:blank:]]*=|window[.]location[[:blank:]]*=|window[.]open[[:blank:]]*[(])[[:blank:]]*[\'\"]?(([[a-z]{3,5}://(([.a-zA-Z0-9-])+(:[0-9]+)*))*([:%/?=&;\\,._a-zA-Z0-9-]*))(#[.a-zA-Z0-9-]*)?[\'\"
]?",$file,$regexp))
 {
 print $regexp[2]."\n";
 $file=str_replace($regexp[0], "", $file);
 }
$end_time = getmicrotime()- $start_time;
print "Completed in ".$end_time." seconds";
?>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to