朱迪矩阵

✍ dations ◷ 2025-08-06 11:40:43 #数据结构

朱迪矩阵(Judy array)是一个计算机科学和软件工程学中的名词,是一种高性能、低内存消耗的数据结构,实现了关联数组的功能。与普通数组不同,Judy array可以是稀疏的,这一点更像是散列表,而非数组。Judy array可以用整形或字符串作为键值来存储、查询数据,它最大的优势是可动态自动扩展,高性能,节省内存并且易于使用。

由于Judy array在操作速度和内存使用上都非常高效,同时并不需要特殊配置或初始化,使得它可以用来替换掉多种常见数据结构,例如跳跃列表,链表,二叉树,B树,散列表,而且judy array在海量数据集上的表现比那些数据结构更好。

粗略地讲,Judy array像是一个高度优化了的256叉树,为了节省内存,它使用了超过20种不同的压缩技术来压缩树节点。.

Judy array 是Douglas Baskins发明的,他用自己妹妹的名字命名了这种数据结构。

容量、用量、密度 这三个概念是传统树形结构中很少使用,但在Judy array中反复使用的。这个的概念的定义如下:

Judy array是没有容量限制的,所以也不用事先分配好存储空间,它可以根据用量动态决定生长或收缩内存使用,来支撑海量数据存储。其存储能力仅受到计算机内存容量的限制。 Judy array的内存用量与其存储的数据用量基本呈线性关系。

Judy array在设计上就力争保持尽可能高的CPU缓存命中率,为了达到这个目标,其内部算法十分复杂。由于有了这些针对性的优化,使得Judy array在运行速度上十分高效,有时甚至超过散列表,尤其是在处理大数据集的时候。由于Judy array是依托树 (数据结构)形结构设计的,其内存消耗比散列表小很多,同样是拜树形结构所赐,使得它可以完成键值的顺序遍历,这一点在散列表中是不可能的。

从Judy array的发明者所撰写的简介以及其他一些相关的中文论文中看,设计中使用了多种的压缩思想与压缩算法,根据不同的密度情况,选择不同的压缩方式,以期尽可能节省内存,降低实际存储中的稀疏情况,我猜测,这能够在缓存命中率上带来不少提升,进而提升效率。

看到的算法思路包括:

相关

  • VRE抗万古霉素肠球菌(vancomycin-resistant Enterococcus,缩写作 VRE),又名万古霉素抗药性肠球菌,是肠球菌属下的一种细菌,有着对万古霉素这种抗生素的抗药性。在肠球菌属中,对人类有
  • 最后的审判最后的审判(希伯来语:יום הדין‎;阿拉伯语:يوم القيامة‎;英语:Last Judgment),或者称为大审判、末日审判,是一种宗教思想,在世界末日之时神会出现,将死者复生并对他
  • 保留字保留字(英语:Reserved word),有时也叫关键字(keyword),是编程语言中的一类语法结构。在特定的编程语言里,这些保留字具有较为特殊的意义,并且在语言的格式说明里被预先定义。通常,保留
  • 荷属圣马丁2019冠状病毒病荷属圣马丁疫情,介绍在2019冠状病毒病疫情中,在荷属圣马丁发生的情况。2019冠状病毒病于2020年3月18日波及荷属圣马丁。2020年3月18日,荷属圣马丁出现第一例确诊
  • 伦德施泰特第二次世界大战卡尔·鲁道夫·格尔德·冯·伦德施泰特(德语:Karl Rudolf Gerd von Rundstedt,1875年12月12日-1953年2月24日)是纳粹德国德意志国防军陆军军官,1940年7月19日被晋升
  • 大理石拱门坐标:51°30′47″N 0°9′32″W / 51.51306°N 0.15889°W / 51.51306; -0.15889大理石拱门(Marble Arch)是一座白色卡拉拉-大理石建筑,位于英国伦敦牛津街西端,与公园里和爱治
  • 卡布尔街之战英国法西斯同盟 (黑衫军) 反法西斯主义者 奥斯瓦尔德·莫斯利1936年10月4日是个礼拜日,这一天在伦敦东区的卡布尔街上发生了一场规模较大的警民冲突。冲突双方为伦敦警方和
  • 中铁交通投资集团中铁交通投资集团有限公司,注册地位于南宁,隶属于中国铁路工程集团的中国中铁。业务性质为高速公路建造经营。2017年,公司总资产498.09亿元,净资产90.73亿元,净利润3.26亿元。201
  • 实兰沟实兰沟 (马来语:Selangau) 是马来西亚的诗巫和民都鲁之间陆路通车,又在木胶支路交叉口,且距离相当于三个城市之中心点,三处来往车辆大都停此略作歇息。故在八十年代,路的两旁木店
  • 利比亚行政区划利比亚全国划分为22个省。在独立时,利比亚划分为3个省。1963年,利比亚划分为10个省。1995年改为13个省(shabiyat)。1998年,增加到26个省。从2007年开始,利比亚改为22个省。