8000 GitHub - cfcosta/muhex
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

cfcosta/muhex

Repository files navigation

muhex

Warning

muhex requires a nightly version of the Rust compiler.

Muhex provides encoding and decoding in a hexadecimal representation, focusing on speed. It has zero dependencies (one optional, serde), compiles instantly and is faster.

Usage

Install the crate using the normal incantations:

cargo +nightly add muhex

Then, you can use it as expected, and the interface is meant to mirror the one on the hex crate, like encoding:

println!("{}", muhex::encode("Hello world!")); // Prints "48656c6c6f20776f726c6421"

And decoding:

println!("{}", muhex::decode("48656c6c6f20776f726c6421")?); // Prints "Hello world!"

Benchmarks

This is a benchmark on my own machine against the hex crate.

  • Command: RUSTFLAGS="-C target-cpu=native -C target-feature=+avx2,+avx,+sse2" cargo bench --all-feature
  • Machine: Ryzen 7950X3D 128GB DDR5 RAM
Operation Implementation Time Throughput Speedup
Encode hex 3.089 ms 323.67 MiB/s 1x
Encode muhex 52.23 µs 18.696 GiB/s ~57x
Decode hex 6.172 ms 162.03 MiB/s 1x
Decode muhex 160.97 µs 6.067 GiB/s ~38x
Serialize hex 4.404 ms 227.04 MiB/s 1x
Serialize muhex 968.59 µs 1.008 GiB/s ~4.5x
Deserialize hex 6.341 ms 157.71 MiB/s 1x
Deserialize muhex 166.55 µs 5.864 GiB/s ~38x

Please note that we can only achieve this performance because we only work on nightly Rust, and explicitly enforce SIMD. This is not a testament on the quality or performance of the hex crate. In fact, in most applications (if not all) will not benefit from any of those changes.

About

No description, website, or topics provided.

Resources

License

MIT, Apache-2.0 licenses found

Licenses found

MIT
LICENSE
Apache-2.0
LICENSE-APACHE

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  
0