#hilbert #lookup-tables #mapping #space-filling-curve #peano-curves

fast_hilbert

使用高效的查找表(LUT)快速计算 2D Hilbert 曲线

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

Download history 115/week @ 2024-03-30 48/week @ 2024-04-06 120/week @ 2024-04-13 73/week @ 2024-04-20 21/week @ 2024-04-27 86/week @ 2024-05-04 72/week @ 2024-05-11 152/week @ 2024-05-18 62/week @ 2024-05-25 64/week @ 2024-06-01 35/week @ 2024-06-08 86/week @ 2024-06-15 73/week @ 2024-06-22 149/week @ 2024-06-29 87/week @ 2024-07-06 50/week @ 2024-07-13

每月下载 362
用于 4 crates

MIT 许可证

23KB
330

Fast Hilbert

Build Status doc crates.io usage license

使用高效的查找表(LUT)和仅考虑给定输入的最低顺序进行 2D Hilbert 曲线计算

h1 h2 h3 h4 h5 h6

  • 从离散 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 毫秒 还允许其他变体,例如 MooreLIU
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