On Thu, 2003-05-22 at 15:02, George Schlossnagle wrote:
> On Thursday, May 22, 2003, at 02:58 PM, Andi Gutmans wrote:
>
> > At 12:52 PM 5/22/2003 -0400, Sterling Hughes wrote:
> >> Hi,
> >>
> >> I've attached a small patch which removes HANDLE_NUMERIC() from
> >> zend_hash.c, and moves it instead to the necessary places in
> >> zend_execute.c, in the form of a zend_is_numeric_key() function
> >> defined
> >> in zend_operators.c
> >>
> >> Anyhow, I'm getting a really nice performance increase. Although it
> >> depends on the usage, it certainly makes pretty much everything
> >> zippier
> >> (and dare I say sexier. :)
> >
> > I'm not sure you can be certain that other places in PHP don't use the
> > feature of HANDLE_NUMERIC.
> > Seems to be quite a dangerous patch to me even if you solved it for
> > the symbol table.
>
> Yeah... seems safer using your leaner symbol tables where appropriate
> rather than carving up the current implementation.
>
What areas rely on it though? Think about how esoteric this usage is.
AFAICT (and Zeev) HANDLE_NUMERIC() is only used when you assign to an
array:
$ar["20"] = 10;
Where else to imagine that this feature would be used? The only place
that really concerns me is engine level, but I can't find the problem
there. As far as extension space, I've written enough extensions and
maintained enough "extension-ish" code, and I haven't run across this
once.
Leaner hashtables may also be an option, but I can't see a reason that
HANDLE_NUMERIC() belongs in the hash table implementation.
-Sterling
--
Good judgement comes from experience, and experience comes from
bad judgement.
- Fred Brooks