Connecting Tech Pros Worldwide Forums | Help | Site Map

how to improve perf. ?

erickrefener
Guest
 
Posts: n/a
#1: Jul 17 '05
Hi,

I made a script which analyse very long strings and I need to make it
work differently depending of the 5 first chars of it.

I already do :

switch (true){
case ( ereg("12345", $data) ):
print '$data est un chaine 12345';
break;
case ( ereg("54321", $data) ):
print '$data est un chaine 54321';
break;
default:
print 'invalid data';
}

cause those first chars order doesn't matter, it can't be found in the
same order again ...

I know that there are lots of way to do this with php but could you tell
me which would the fastest way (talking about performance) to do it ?
(in order to make php not to analyse the entire string but only those 5
first chars ....)

thanks a lot,


erick


Tom Thackrey
Guest
 
Posts: n/a
#2: Jul 17 '05

re: how to improve perf. ?



On 16-Jan-2004, erickrefener <erick@spamitoudina.com> wrote:
[color=blue]
> I made a script which analyse very long strings and I need to make it
> work differently depending of the 5 first chars of it.
>
> I already do :
>
> switch (true){
> case ( ereg("12345", $data) ):
> print '$data est un chaine 12345';
> break;
> case ( ereg("54321", $data) ):
> print '$data est un chaine 54321';
> break;
> default:
> print 'invalid data';
> }
>
> cause those first chars order doesn't matter, it can't be found in the
> same order again ...
>
> I know that there are lots of way to do this with php but could you tell
> me which would the fastest way (talking about performance) to do it ?
> (in order to make php not to analyse the entire string but only those 5
> first chars ....)
>
> thanks a lot,[/color]

Please cross-post in the future.

switch (substr($data,0,5))
{
case '12345':
...
case '54321':
...
}

--
Tom Thackrey
www.creative-light.com
tom (at) creative (dash) light (dot) com
do NOT send email to jamesbutler@willglen.net (it's reserved for spammers)
Chung Leong
Guest
 
Posts: n/a
#3: Jul 17 '05

re: how to improve perf. ?


First of all, what is the point of writing an if-else-if statement as a
switch statement?

As noted in the PHP manual preg_match() is faster than ereg. The problem
with you regular expression is you're telling it to search to whole text.
Put a ^ at the beginning to specify match at the beginning of the string.

if(preg_match("/^12345/", $data)) {
print '$data est un chaine 12345';
}
else if(preg_match("/^54321/", $data)) {
print '$data est un chaine 54321';
}
else {
}

Of course, the assumption here is that the actual regular expressions are
more complicated that a straight string comparison.

Uzytkownik "erickrefener" <erick@spamitoudina.com> napisal w wiadomosci
news:QLYNb.7204$c1.1005915@news20.bellglobal.com.. .[color=blue]
> Hi,
>
> I made a script which analyse very long strings and I need to make it
> work differently depending of the 5 first chars of it.
>
> I already do :
>
> switch (true){
> case ( ereg("12345", $data) ):
> print '$data est un chaine 12345';
> break;
> case ( ereg("54321", $data) ):
> print '$data est un chaine 54321';
> break;
> default:
> print 'invalid data';
> }
>
> cause those first chars order doesn't matter, it can't be found in the
> same order again ...
>
> I know that there are lots of way to do this with php but could you tell
> me which would the fastest way (talking about performance) to do it ?
> (in order to make php not to analyse the entire string but only those 5
> first chars ....)
>
> thanks a lot,
>
>
> erick
>[/color]


Closed Thread