12 个版本 (6 个破坏性版本)
0.9.0 | 2023年11月23日 |
---|---|
0.8.1 | 2023年9月6日 |
0.8.0 | 2023年6月19日 |
0.6.1 | 2021年8月31日 |
0.2.0 |
|
#6 in 值格式化
每月469,931次下载
用于 492 个crate(89 个直接使用)
56KB
1K SLoC
faster-hex
此程序使用各种不同的指令集将切片编码为预定的目的地。
基准测试
运行
运行基准测试
cargo bench
结果
机器:MacBook Pro (Early 2015) (2.7 GHz Intel Core i5)
Rust: rustc 1.31.0 (abe02cefd 2018-12-04)
与 hex 比较
- 编码速度快10倍以上
- 解码速度快10倍以上
与 rustc-hex 比较
- 编码速度快2.5倍以上
- 解码速度快7倍以上
示例
编码为十六进制
use faster_hex::hex_string;
let result = hex_string(b"Hello world!");
assert_eq!(result, "48656c6c6f20776f726c6421");
编码为大写十六进制
use faster_hex::hex_string_upper;
let result = hex_string_upper(b"Hello world!");
assert_eq!(result, "48656C6C6F20776F726C6421");
解码
use faster_hex::hex_decode;
let src = b"48656c6c6f20776f726c6421";
let mut dst = vec![0; src.len() / 2];
hex_decode(src, &mut dst).unwrap();
assert_eq!(dst, b"Hello world!");
带有大小写检查的解码
use faster_hex::{hex_decode_with_case, CheckCase};
let src = b"48656c6c6f20776f726c6421";
let mut dst = vec![0; src.len() / 2];
assert!(hex_decode_with_case(src, &mut dst, CheckCase::Lower).is_ok());
assert_eq!(dst, b"Hello world!");
assert!(hex_decode_with_case(src, &mut dst, CheckCase::None).is_ok());
assert_eq!(dst, b"Hello world!");
assert!(hex_decode_with_case(src, &mut dst, CheckCase::Upper).is_err());
Serde功能
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
struct Simple {
#[serde(with = "faster_hex")]
foo: Vec<u8>,
#[serde(with = "faster_hex::nopfx_lowercase")]
bar: Vec<u8>,
}
注意
主版本零(0.y.z)用于初始开发。任何内容都可能在任何时候更改。公共API不应被视为稳定。
在1.0.0之前进行不兼容API更改时的次要版本。
许可证
本项目采用MIT许可证。
第三方软件
本产品包含第三方开发的软件的副本和修改
- src/encode.rs 基于 stdsimd,采用MIT许可证或Apache许可证(版本2.0)。
- src/decode.rs avx2解码来自 fast-hex
请参阅源代码文件以获取更多详细信息。
第三方许可证的副本可在 LICENSE-THIRD-PARTY 中找到。
依赖关系
~110–340KB