PHP的HashTable采用的拉链法来解决冲突, 这个自不用多说, 我今天主要关注的就是PHP的Hash算法, 和这个算法本身透露出来的一些思想....算法的核心思想就是:
hash(i) = hash(i-1) * 33 + str[i]
在zend_hash.h中,我们可以找到在PHP中的这个算法:
static inline ulong...算法中, 我们可以看出很处细致的不同....另外还有inline, register变量 … 可以看出PHP的开发者在hash的优化上也是煞费苦心
最后就是, hash的初始值设置成了5381, 相比在Apache中的times算法和Perl中的...至于说, 为什么是Times 33而不是Times 其他数字, 在PHP Hash算法的注释中也有一些说明, 希望对有兴趣的同学有用:
DJBX33A (Daniel J.