Re: strpos() before str_replace()? Or, maybe strtr()? [message #184919 is a reply to message #184918] |
Sun, 16 February 2014 12:10 |
bill
Messages: 310 Registered: October 2010
Karma:
|
Senior Member |
|
|
On 2/16/2014 4:49 AM, Jason C wrote:
> I know that I'm talking about microseconds here, so this is really just for the sake of furthering my own education.
>
> I'm looping through roughly 100,000 values:
>
> $userArr = array(
> "something" => "anything",
> ...
> );
>
> foreach ($userArr as $key => $val) {
> $firstname = str_replace($key, "****", $firstname);
> $lastname = str_replace($key, "****", $lastname);
> }
>
> Both $firstname AND $lastname could contain any of the keys,
but could only potentially contain one key each. It's likely,
though,
that neither will contain any of the keys.
>
> Would it be faster to use strpos() before each str_replace(), like so?:
>
> foreach ($userArr as $key => $val) {
> if (strpos($firstname, $key) !== false)
> $firstname = str_replace($key, "****", $firstname);
>
> if (strpos($lastname, $key) !== false)
> $lastname = str_replace($key, "****", $lastname);
> }
>
> My instinct is that it would be the same, if not marginally slower;
allowing a potential computation time for 100,002 strpos() as
opposed to 100,000 str_replace().
>
> Or, would strtr() be faster? I've never actually used this function in practice;
I think it's a slow function, but have never tested it, and
don't remember where I read that:
>
> $firstname = strtr($firstname, $userArr);
> $lastname = strtr($lastname, $userArr);
>
> Any other suggestions on what might be the fastest option?
>
> TIA,
>
> Jason
>
Why would you want the opinion of a bunch of Old Farts (sorry
Jerry) when you could easily test it yourself and instruct us ?
-bill
Vetustior Humo
|
|
|