朱迪矩阵

✍ dations ◷ 2025-11-26 18:14:21 #数据结构

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

看到的算法思路包括:

相关

  • 力拓力拓河(西班牙语:Río Tinto,西班牙语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","
  • span class=nowrapEuClsub3/sub/span三氯化铕又称氯化铕(III)、氯化铕(化学式:EuCl3),是稀土金属铕(III)的氯化物。氯化铕是黄色的固体,低于或等于熔点时会分解生成氯化铕(II)(EuCl2)。它有强烈的吸水性,无水物暴露在潮
  • 金粉世界《金粉世界》(Gigi)是一部美国电影。
  • 毛蚋下目毛蚋下目(学名:Bibionomorpha)是昆虫纲双翅目长角亚目之下的一个下目。根据R.W. Crosskey在1993年的分类,毛蚋下目包括下列各科:
  • 高安市高安市是中国江西省宜春市下辖的一个县级市。地处江西省中部偏西北,毗邻南昌市。汉高祖六年(公元前201年)置建成县,为高安建县之始。西汉元始四年(公元4年)改称多聚县。东汉建武元
  • 琼妮·麦克阿瑟琼妮·麦克阿瑟 (英语:Jean Marie Faircloth MacArthur, 1898年12月28日-2000年1月22日)是美国五星上将道格拉斯·麦克阿瑟的第二任妻子。1898年出生在田纳西州纳什维尔,父亲是
  • Agnez Mo《Agnez Mo》是印度尼西亚女歌手Agnes Monica的第二张录音室专辑,于2013年6月1日推出。自同名专辑推出她的新,这在以前被称为“艾格尼丝莫妮卡”。它最初被记录为它发给了唱片
  • 山齐·杜特山齐·杜特 (旁遮普语:ਸੰਜੇ ਦੱਤ, 印地语:संजय दत्त;1959年7月29日-)是一名印度演员和制片人,主要演出宝莱坞电影。他是电影演员苏尼·杜特(英语:Sunil Dutt)和纳吉丝·
  • 技术哲学技术哲学(英语:philosophy of technology)是哲学的一大分支,研究技术的本质和它的社会效益。技术哲学可以追溯到西方哲学的开端,古希腊人关于技术(英语:technology,古希腊语词根:tech
  • 软件工程师软件工程师(英语:Software Engineer)一般指从事软件开发职业的人。软件工程师跟一般程序员的分别,在于一个程序员的工作是按照指定的规格进行编码,而软件工程师的工作则需要设计