4 个版本 (稳定)
2.0.0 | 2022 年 10 月 31 日 |
---|---|
1.0.1 | 2022 年 10 月 16 日 |
1.0.0 | 2021 年 3 月 31 日 |
0.1.0 | 2021 年 2 月 11 日 |
在 算法 中排名 837
每月下载 362 次
用于 4 crates
23KB
330 行
Fast Hilbert
使用高效的查找表(LUT)和仅考虑给定输入的最低顺序进行 2D Hilbert 曲线计算
- 从离散 2D 空间转换为 1D Hilbert 空间并反向转换
- 适用于不同的无符号整数输入类型(感谢 DoubleHyphen PR#3)
- 通过最低顺序计算加速(感谢 DoubleHyphen PR#2)
- 使用高效的 512 字节 LUT 非常快
- 仅有一个额外的 依赖项
基准测试从完整的 256x256 离散 2D 空间到 1D Hilbert 空间的转换,显示 fast_hilbert 比用 Rust 编写的最快的 2D Hilbert 变换库快约 12 倍。在 Intel i5-6400 CPU @ 2.70 GHz,4 核心 和 8 GB RAM 上进行基准测试
库 | 时间 | 描述 |
---|---|---|
fast_hilbert | 0.2 毫秒 | 针对在 2D 离散空间中使用高效的 LUT 进行快速计算进行优化 |
hilbert_2d | 2.5 毫秒 | 还允许其他变体,例如 Moore 和 LIU |
hilbert_curve | 2.0 毫秒 | 实现了在 维基百科 上描述的算法 |
hilbert | 32.1 毫秒 | 允许计算更高维的 Hilbert 曲线 |
特别是对于更高阶的 fast_hilbert,通过仅使用下一个最低的相关顺序,而不是对给定输入的 Hilbert 曲线进行逐位计算,优于其他库。请参阅 PR #2 和 #9 获取更多详细信息。
例如,使用 fast_hilbert
来计算 xy2h(1, 2, 64)
的速度非常快,与较高的 x,y 对(如 xy2h(u32::MAX-1, u32::MAX-2, 64)
)相比。
库 | x=1, y=2, order=64 | x=u32::MAX-1, y=u32::MAX-2, order=64 |
---|---|---|
fast_hilbert | 4 纳秒 | 29 纳秒 |
hilbert_2d | 73 纳秒 | 72 纳秒 |
hilbert_curve | 67 纳秒 | 49 纳秒 |
hilbert | 690 纳秒 | 680 纳秒 |
依赖项
~155KB