PHP内核中的神器之HashTable
一、哈希表定义
哈希表(或散列表),是将键名key按指定的散列函数HASH经过HASH(key)计算后映射到表中一个记录,而这个数组就是哈希表。这里的HASH指任意的函数,例如MD5、CRC32、SHA1或你自定义的函数实现。
二、HashTable性能
HashTable是一种查找性能极高的数据结构,在很多语言内部都实现了HashTable。理想情况下HashTable的性能是O(1)的,性能消耗主要集中在散列函数HASH(key),通过HASH(key)直接定位到表中的记录。
而在实际情况下经常会发生key1 != key2,但HASH(key1) = HASH(key2),这种情况即Hash碰撞问题,碰撞的概率越低HashTable的性能越好。当然Hash算法太过复杂也会影响HashTable性能。
三、理解PHP的哈希表实现
在PHP内核也同样实现了HashTable并广泛应用,包括线程安全、全局变量、资源管理等基本上所有的地方都能看到它的身影。不仅如此,在PHP脚本中数组(PHP的数组实质就是HashTable)也是被广泛使用的,例如数组形式的配置文件、数据库的查询结果等,可以说是无处不在。
那么既然PHP的数组使用率这么高,内部是如何实现的?它如何解决hash碰撞及实现均匀分布的?PHP脚本使用数组应该注意哪些?
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Hadoop YARN中内存的设置
- 下一篇: 配置C#环境变量并运行程序
copyright © 2008-2019 亿联网络 版权所有 备案号:粤ICP备14031511号-2