griddle:一个HashMap变体,可在插入中分散调整大小的负载

时间:2024-04-08 23:26:09
【文件属性】:

文件名称:griddle:一个HashMap变体,可在插入中分散调整大小的负载

文件大小:83KB

文件格式:ZIP

更新时间:2024-04-08 23:26:09

Rust

一个HashMap变体,可将大小调整负载HashMap到多个插入中。 随着元素数量的增加,大多数哈希表实现(包括 ,这是Rust的标准库中的一种)有时必须“调整”映射的后备内存大小。这意味着分配一个新表(通常是大小的两倍),并将所有元素从旧表移到新表。随着表的变大,此过程将花费越来越长的时间。 对于大多数应用程序,此行为很好-如果插入的次数很少,而其他插入所花费的时间更长,则该应用程序甚至不会注意到。而且,如果地图相对较小,那么即使是那些“慢速”插入也非常快。同样,如果您的地图增长了一段时间,然后又停止增长,那么应用程序的“稳定状态”将根本看不到任何调整大小的暂停。 调整大小成为问题的地方是使用映射的应用程序保持不断增长的状态,其中尾部等待时间很重要。在大规模情况下,一个地图插入要花费30毫秒根本是不可行的,而大多数地图插入要花费不到一微秒的时间。更糟糕的是,这些调整大小的停顿可能会加剧尾


【文件预览】:
griddle-master
----misc()
--------vroom.plt(535B)
--------vroom.png(20KB)
----LICENSE-MIT(1KB)
----LICENSE-APACHE(11KB)
----tests()
--------regressions.rs(6KB)
--------quick.rs(9KB)
--------serde.rs(1KB)
--------rayon.rs(13KB)
----tarpaulin.toml(36B)
----azure-pipelines.yml(2KB)
----src()
--------raw()
--------external_trait_impls()
--------set.rs(52KB)
--------map.rs(133KB)
--------lib.rs(5KB)
----Cargo.toml(2KB)
----benches()
--------vroom.rs(1KB)
----codecov.yml(284B)
----.gitignore(25B)
----README.md(5KB)

网友评论