朱迪矩阵

✍ dations ◷ 2025-06-29 04:17:45 #数据结构

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

看到的算法思路包括:

相关

  • 驱动蛋白驱动蛋白(英语:Kinesin)是一类蛋白质超级家族,属于分子马达的一种,其成员代表驱动蛋白-1(Kinesin-1)在1985年被发现。驱动蛋白是由单体组成的多聚体,其“头部”具有ATP酶活性,能通过
  • 表面抗原抗原(antigen,缩写Ag)为任何可诱发免疫反应的物质,不只是从病原体那里取得,一般来说体内发现分子够大的有机物就有可能作为一个适合的抗原,这样也就会导致例如过敏等问题。外来分
  • 剑潭神社台湾神宫是原位于台湾台北市剑潭附近的剑潭山山麓的神社,1901年完工时名为“台湾神社”,二战末期(1944年)升格为神宫,主祀死于台湾的北白川宫能久亲王,是台湾日治时期所建的神社中
  • 梶田隆章梶田隆章(日语:梶田 隆章/かじた たかあき Kajita Takaaki ?,1959年3月9日-),日本物理学家、天文学家,现任东京大学宇宙射线研究所(日语:東京大学宇宙線研究所)所长、同研究所附属宇
  • 兴城古城坐标:40°37′15″N 120°42′27″E / 40.62083°N 120.70750°E / 40.62083; 120.70750兴城古城位于中国辽宁省兴城市,古称宁远,是现存最完整的明代卫城,主要明代遗迹有文庙、
  • 笄礼笄礼,是中国、朝鲜传统的女性成年礼。笄礼作为女性的成人礼,像男性的冠礼一样,也是表示成人的仪式,在举礼的程序等问题上大体和冠礼相同。“笄”(拼音:jī ,注音符号:ㄐㄧ),《说文解字
  • 北冰洋会议首届北冰洋会议于2008年5月27日至29日在格陵兰的伊卢利萨特召开。加拿大、丹麦、挪威、俄罗斯和美国五国在会议上针对与北冰洋相关的关键问题展开讨论。 此次会议因为其有关
  • 彰泰集团彰泰集团(英语:Zhangtai Group),全称桂林彰泰实业集团有限公司,由黄海涛创立于1992年,总部设在桂林,荣获“2003年度中国房地产品牌企业50强”。
  • 弗拉基米尔·约万西奇弗拉基米尔·约万西奇(塞尔维亚语:Владимир Јованчић,1987年5月31日-),是一名塞尔维亚裔波黑职业足球运动员,最近曾效力中国足球超级联赛球队天津泰达。约万西奇在
  • 彩霞温泉坐标:23°08′21″N 121°06′15″E / 23.139104°N 121.104106°E / 23.139104; 121.104106彩霞温泉位于台湾台东县海端乡,该温泉源自新武吕溪,该溪谷温泉距交通动线极近,相当