Electronics & Programming


Open Source electronics development and programming

  • You are not logged in.
  • Root
  • » PHP
  • » [PHP-DEV] Re: Hash Function change between PHP4 and PHP5 [RSS Feed]

#1 Nov. 20, 2005 22:57:13

Andi G.
Registered: 2009-11-02
Reputation: +  0  -
Profile   Send e-mail  

[PHP-DEV] Re: Hash Function change between PHP4 and PHP5

Hey guys,Although I'm senile and I don't remember 100%, I believe Ralf isright and the slight difference must have slipped in when I used hisoptimized version of the hash function. I don't think I meant to makethe change from xor to addition.I suggest to leave it as-is as, as there seems to be really nodifference between the versions, and I doubt that on most CPUs xorvs. addition take a different time to execute.Ralf, thanks for your feedback.


At 10:29 AM 11/20/2005, Ralf S. Engelschall wrote:On Sun, Nov 20, 2005, Stefan Esser wrote:

> I just realised, that between PHP4 and PHP5 we changed the hash function
> used within zend_hash.h from DJBX33X to DJBX33A. The diff is here =>>http://cvs.php.net/diff.php/ZendEngine2/zend_hash.h?ws=0&r1=1.57&r2=1.58&ty=u>
> Does anyone remember the exact reason for that? Or was the change done
> by accident when the loops were unrolled? I have no idea if there is a
> big difference for our hashing needs, but I am just curious if we
> changed it because of benchmarks...

I don't know anything about the decisions within PHP development,
but the root reference for both are certainly my OSSP act sources:http://cvs.ossp.org/getfile/ossp-pkg/act/act_hash_fct.cThere I've done in 2002 a comparison of mostly all known
(non-cryptography) hash functions which were in common use at this
time, including DJBX33A and DJBX33X. From my results (see the table
starting in the comment at line 80) you can see that both are more or
less equal, both in speed and distribution. The DJBX33A is the classical
one from DJB while DJBX33X is a revised version from him he used
later (but without any explanations by him or anybody else about the
advantages/disadvantages, although I think it is for just speed).

I guess Andi perhaps has just overlooked the small subtle difference
("+" operation for DJBX33A and "^" for DJBX33X), because as his commit
log for PHP explains, his intention was to provide an optimized version
(via the loop unrolling) plus my explanation about this hash function.
So, the conversion from DJBX33A to DJBX33X was perhaps just by accident.

But it doesn't really hurt: as I said, DJBX33X and DJBX33A are more or
less equal in quality and speed. DJBX33X is even slightly faster on most
processors so choosing DJBX33X is fully ok. At least because of this I
personally also prefer DJBX33X over DJBX33A. No need to change anything
at least... ;-)

Ralf S. Engelschall

PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit:http://www.php.net/unsub.php


  • Root
  • » PHP
  • » [PHP-DEV] Re: Hash Function change between PHP4 and PHP5 [RSS Feed]

Board footer

Moderator control

Enjoy the 22nd of April

The Forums are managed by develissimo stuff members, if you find any issues or misplaced content please help us to fix it. Thank you! Tell us via Contact Options
Leave a Message
Welcome to Develissimo Live Support