9次发布

使用旧的Rust 2015

0.1.8 2019年6月13日
0.1.7 2017年6月26日
0.1.5 2016年9月23日

#104 in 无需标准库

Download history 1329/week @ 2024-03-14 852/week @ 2024-03-21 1005/week @ 2024-03-28 1019/week @ 2024-04-04 1049/week @ 2024-04-11 1058/week @ 2024-04-18 918/week @ 2024-04-25 1031/week @ 2024-05-02 1298/week @ 2024-05-09 2244/week @ 2024-05-16 1773/week @ 2024-05-23 1624/week @ 2024-05-30 1903/week @ 2024-06-06 1796/week @ 2024-06-13 1545/week @ 2024-06-20 1309/week @ 2024-06-27

6,813 每月下载量
16 个Crate中使用 (8 直接使用)

MIT/Apache

16KB
217

bit_reverse

Crates Shield Build Shield Build status

库目标

此库提供多种方法来计算所有原始整数的位反转。目前实现了3种不同的算法:位运算、并行和查找反转。

示例

use bit_reverse::ParallelReverse;

assert_eq!(0xA0u8.swap_bits(), 0x05u8);

此库非常简单易用,只需导入crate和您想使用的算法。然后您可以在任何原始整数上调用 swap_bits()。如果您想尝试不同的算法,只需更改use语句,现在您的程序将使用该算法。

性能比较

BitwiseReverse 可用于空间受限的微控制器中捕获数据时,但通常劣于 ParallelReverse,后者是一种位并行反转,因此速度要快一个数量级。对于小于等于16位的小尺寸,LookupReverse 是最快的,但它不如 ParallelReverse 可扩展,这是因为 ParallelReverse 对每个大小都执行固定数量的操作(假设您的CPU有硬件字节交换指令)。LookupReverse 需要更多的查找、AND和OR操作来处理每个大小的增加。因此,ParallelReverse 在32位时表现略好,在64位时表现更好。这些运行时特征基于 Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz。

内存消耗

BitwiseReverseParallelReverse 都只使用几个堆栈变量进行计算。 BitwiseReverse 比空间更小(在MSP430上为18字节)。另一方面,LookupReverse 静态分配256个u8或256个字节来进行其计算。LookupReverse 的内存成本由它支持的类型共享。

与no_std兼容

要链接到核心而不是STD,请禁用此库在Cargo.toml中的默认功能。Cargo选择功能

无运行时依赖

功能