朱迪矩阵

✍ dations ◷ 2024-12-23 10:11:39 #数据结构

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

看到的算法思路包括:

相关

  • span class=chemf style=white-space:nowrap;Csub19/sub十九烷是一种有机化合物,一种化学式为C19H40的烷烃,室温下为固体。
  • 谷物产量本列表是2005-2014年世界各国谷物产量的列表,数据来源于联合国粮食及农业组织。单位:(公吨)
  • 拍卖拍卖(英语:Auction),是人类社会特殊的商品交易方式,近现代以来在世界各国广为发展。而拍卖活动是在一定经营理念的指导下进行的。拍卖,各国的法律解释有所不同,中华人民共和国拍卖
  • 拉齐奥大区拉齐奥(意大利语:Lazio,拉丁语:Latium)是意大利的一个大区,其政府所在地为罗马。又译为拉提雍或拉丁姆。拉齐奥的名称来自于“Latium”,即“拉丁人之地”,是古罗马发源的地方。东哥
  • 阿里马阿里马(英语:Arima),全称阿里马皇家特许自治市(英语:The Royal Chartered Borough of Arima),是加勒比海岛国特立尼达和多巴哥特立尼达岛的一座城市,位于该岛北部,建立于1757年,2011年
  • 维尼·安格莱尼维尼·安格莱尼(印尼语:Weni Anggraini,1990年10月16日-),印尼女子羽毛球运动员。2012年,安格莱尼出战马来西亚羽毛球黄金大奖赛,与伊尔凡·法蒂拉赫合作赢得混合双打亚军。只列出曾
  • 比尔人比尔人(Bhils),是印度中部主要的部落民族,人口主要集中在拉贾斯坦邦、古吉拉特邦、马哈拉施特拉邦、中央邦,少部分分布于印度的南部和东部,例如,安得拉邦、卡纳塔克邦、特里普拉邦
  • 杀戮战警《杀戮战警》(英语:)是一部2000年美国动作犯罪惊悚片,由约翰·辛格顿(英语:John Singleton)执导并与理察·普莱斯(英语:Richard Price (writer))、夏恩·萨雷诺(英语:Shane Salerno)共同
  • 冲洗冲洗 (又称底片冲洗) 是一种利用化学方法, 让底片或相纸在曝光之后产生正像或负像的过程。 这个过程让底片上的潜像 (不可见且容易受可见光破坏) 转变为稳定可见的影像。大多
  • 何文杞何文杞(1931年-),生于台湾屏东,台湾画家。何文杞出生于1931年日治时期台湾屏东,父亲从商,曾经营杂货店、洗衣店等,毕业于台湾省立屏东师范学校及台湾省立师范大学艺术系毕业,曾任教高