Re: zend_u_strtod is slow - possible fix
| From: | Matt W | Date: | Wed, 02 Aug 2006 09:12:52 +0000 |
| Subject: | Re: zend_u_strtod is slow - possible fix | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-25106@lists.php.net to get a copy of this message | ||
Hi Andrei,
Thanks for your reply. Yeah, obviously it'll still be slower than with an
already-binary string. :-) But I figured it's better than before, until
something better comes along...
Unless there were other plans to rewrite it, is there a way to easily (for
me! :-)) have it do all the conversion? I've been thinking about the
different string-to-number functions (will send a separate e-mail)... Is
there a reason the regular zend_strtod() code is so complicated?
zend_string_to_double(), for example, is really simple (and works the same I
assume, except for not handling negatives or leading whitespace). Can
zend_u_strtod() be implemented with the same methods zend_string_to_double()
uses?
Thanks,
Matt
----- Original Message -----
From: "Andrei Zmievski"
Sent: Tuesday, August 01, 2006
> Yes. With your patch applied, the numeric unicode string to double
> conversion is about 100% slower than from binary strings. If this is
> acceptable we can commit the patch. Otherwise, we should port
> zend_strtod() to deal with unicode strings directly.
>
> -Andrei
>
> On Jul 31, 2006, at 1:58 AM, Matt W wrote:
>
> > Hi all,
> >
> > As I was working on upgrading the dec[bin|hex|oct] functions to convert
> > large doubles, I noticed how much slower things were when converting
> > Unicode
> > strings to double. I found that converting the whole thing to string
> > and
> > using regular zend_strtod() was much faster. Then I decided to try
> > modifying the u_strtod() function to do the same, but just on the
> > relevant
> > numeric portion.
> >
> > I don't know if I did everything right, but it seems to work fine with
> > my
> > limited testing. (I was working from zend_u_strtol() and
> > zval_unicode_to_string_ex(). :-)) The function is now about *8 times*
> > faster, and nearly 20 times faster on a non-numeric string! (I'm on
> > Windows.)
> >
> > diff: http://realplain.com/php/zend_u_strtod.diff
> >
> > Is this something that can be used?
> >
> >
> > Thanks,
> > Matt