朱迪矩阵

✍ dations ◷ 2025-04-28 11:58:47 #数据结构

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

看到的算法思路包括:

相关

  • 分类一个位于宿主细胞之外的独立、功能完全的病毒颗粒一些病毒拥有的包裹病毒体的脂肪泡一段DNA或RNA。如果把核苷酸比作字的话,那么基因就是由核苷酸写成的句子。基因会指导病毒
  • 电解质平衡紊乱电解质在生物体的自平衡维持上相当的重要。电解质可调节心臓及神经机能、输送氧气、维持体液平衡(英语:fluid balance)及酸碱平衡等。电解质的不平衡可能因为以下原因而产生:过
  • 孙是指子女的子女,男性称孙儿或孙子,女性称孙女。在父系社会,儿子的子女称为“内孙”或者“孙”,女儿的子女称为“外孙”。而自己的孙或外孙就称自己为祖父母或外祖父母。另外,闽
  • 罗曼罗兰罗曼·罗兰(法语:Romain Rolland;1866年1月29日-1944年12月30日),20世纪的法国著名作家、音乐评论家,1915年度的诺贝尔文学奖得主。1867年出生于法国中部的克拉梅西,1880年全家迁至
  • 威尼斯电影节 - 最佳女演员奖威尼斯双年展国际电影艺术展(意大利语:Mostra Internazionale d'Arte Cinematografica della Biennale di Venezia;英语:International Exhibition of Cinematographic Art of t
  • 皮蛋皮蛋,又称松花蛋、变蛋、灰包蛋、彩蛋、碱蛋、泥蛋等,是以鸭蛋或鸡蛋为制作原料的加工食品。皮蛋在明代称为“混沌子”。方以智《物理小识》:“池州出变蛋,以五种树灰盐之,大约以
  • 爱国歌《爱国歌》(朝鲜语:애국가/愛國歌 Aegukka ?)是朝鲜民主主义人民共和国的国歌,歌名与韩国和朝鲜建国前的国歌相同,但旋律与歌词都不相同。为与其他版本分别,普遍称为《朝日鲜明》
  • 弗里茨·瓦尔特弗里德里希·“弗里茨”·瓦尔特(Friedrich "Fritz" Walter,1920年10月31日-2002年6月17日)生于凯泽斯劳滕,卒于恩肯巴赫-阿尔森博恩,是德国著名的前足球运动员,主要担任前腰,他是19
  • 建国法学院建国法学院是建国大学的一所专业研究生院。位于韩国首都首尔广津区。专门从事房地产法律。在韩国的法律,培养学生入学执业律师。
  • 伊尔茨河伊尔茨河是德国的河流,属于多瑙河的支流,河道全长65公里,流域面积约850平方公里,河口处在帕绍,河畔城镇有菲尔斯特内克。