Skip to content

Fast byte array to hex string conversion

License

Notifications You must be signed in to change notification settings

eranrund/const-hex

 
 

Repository files navigation

const-hex

github crates.io docs.rs build status

This crate provides a fast conversion of byte arrays to hexadecimal strings, both at compile time, and at run time.

Extends the hex crate's implementation with const-eval, a const-generics formatting buffer, similar to itoa's, and more.

Version requirement: rustc 1.64

Performance

This crate is ~10 times faster than hex in encoding, and 30 times faster than libstd in formatting.

You can run the following benchmarks with cargo bench on a nightly compiler.

test encode_const_hex::bench1_32   ... bench:           1 ns/iter ( /- 0)
test encode_const_hex::bench2_128  ... bench:           5 ns/iter ( /- 0)
test encode_const_hex::bench3_4096 ... bench:         204 ns/iter ( /- 9)
test encode_hex::bench1_32         ... bench:          15 ns/iter ( /- 1)
test encode_hex::bench2_128        ... bench:          60 ns/iter ( /- 2)
test encode_hex::bench3_4096       ... bench:       1,703 ns/iter ( /- 50)
test format_const_hex::bench1_32   ... bench:          15 ns/iter ( /- 0)
test format_const_hex::bench2_128  ... bench:          20 ns/iter ( /- 0)
test format_const_hex::bench3_4096 ... bench:         380 ns/iter ( /- 9)
test format_std::bench1_32         ... bench:         470 ns/iter ( /- 4)
test format_std::bench2_128        ... bench:       1,961 ns/iter ( /- 17)
test format_std::bench3_4096       ... bench:      61,688 ns/iter ( /- 1,994)

Acknowledgements

  • hex for the initial encoding/decoding implementations
  • dtolnay/itoa for the initial crate/library API layout

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Fast byte array to hex string conversion

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%