9次发布
使用旧的Rust 2015
| 0.1.8 | 2019年6月13日 |
|---|---|
| 0.1.7 | 2017年6月26日 |
| 0.1.5 | 2016年9月23日 |
#104 in 无需标准库
6,813 每月下载量
在 16 个Crate中使用 (8 直接使用)
16KB
217 行
bit_reverse
库目标
此库提供多种方法来计算所有原始整数的位反转。目前实现了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。
内存消耗
BitwiseReverse 和 ParallelReverse 都只使用几个堆栈变量进行计算。 BitwiseReverse 比空间更小(在MSP430上为18字节)。另一方面,LookupReverse 静态分配256个u8或256个字节来进行其计算。LookupReverse 的内存成本由它支持的类型共享。
与no_std兼容
要链接到核心而不是STD,请禁用此库在Cargo.toml中的默认功能。Cargo选择功能