朱迪矩阵

✍ dations ◷ 2025-10-14 11:27:41 #数据结构

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

看到的算法思路包括:

相关

  • 反刍动物反刍亚目(学名:Ruminantia)是偶蹄目中的一个亚目,其中的动物均是食草性动物,拥有分为多个胃室的胃进行反刍的动作。通过这个结构反刍亚目的动物,可以通过微生物消化其他只有一个胃
  • miRNA小分子核糖核酸(英语:microRNA,缩写为miRNA)又译微核糖核酸,是真核生物中广泛存在的一种长约21到23个核苷酸的核糖核酸(RNA)分子,可调节其他基因的表达。miRNA来自一些从DNA转录而来
  • 十八碳四烯酸十八碳四烯酸 (英文:stearidonic acid或moroctic acid,简称SDA) ,又称硬脂四烯酸,是一种ω-3不饱和脂肪酸。这种脂肪酸可以由α-亚麻酸经过一种去饱和酶(英语:desaturase)去饱和化变
  • 拉脱维亚SSR拉脱维亚苏维埃社会主义共和国(拉脱维亚语:Latvijas Padomju Sociālistiskā Republika,俄语:Латвийская Советская Социалистическая Р
  • 北极虾北极虾(学名:Pandalus borealis),又称北方长额虾。俗称北极甜虾,产自北极附近海域。栖息于北大西洋海域、北冰洋海域。多由加拿大和丹麦的捕捞船捕捞,以每年7月至8月捕捞所得为上
  • 国际文传电讯社国际文传电讯社(Интерфакс),俄罗斯非官方的通讯社,总部设在莫斯科,成立于1989年向公开化方向发展的苏联,目的是打破官方控制的塔斯社对新闻的封锁。国际文传电讯社主要关
  • 阿鲁阿阿鲁阿(Arua),是乌干达西北部的一座城市,阿鲁阿区首府,2005年人口约5.6万。该城正发展成为区内的商业批发中心和交通枢纽,也是活动于西尼罗地区或服务苏丹西赤道省及刚果(金)东北部
  • 若之里忍若之里忍(日语:若の里 忍 ,1976年7月10日-),原名古川忍,日本青森县弘前市出身的前大相扑力士。所属相扑部屋为鸣户部屋(引退时田子之浦部屋)。身高185cm、体重163kg、血型O型。他在1
  • 深圳亚迪学校深圳亚迪学校(英语:Shenzhen Yadi School),又称深圳中学亚迪学校,是位于深圳市大鹏新区的一所民办九年一贯制学校,创办于2003年5月,是“深圳中学共同体”成员校。为满足比亚迪公司
  • 冷却剂流失事故冷却剂流失事故或称“失水事件”、“冷却水流失事故”,简称“LOCA”(读音近“喽卡”)来自英语Loss-Of-Coolant Accident。即核子反应堆的冷却剂因故流失,未能将热能带出反应堆