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选择功能