aboutsummaryrefslogtreecommitdiff
path: root/vendor/simd-adler32/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/simd-adler32/README.md')
-rw-r--r--vendor/simd-adler32/README.md131
1 files changed, 131 insertions, 0 deletions
diff --git a/vendor/simd-adler32/README.md b/vendor/simd-adler32/README.md
new file mode 100644
index 0000000..4eeec46
--- /dev/null
+++ b/vendor/simd-adler32/README.md
@@ -0,0 +1,131 @@
+<h1 align="center">simd-adler32</h1>
+<p align="center">
+ <a href="https://docs.rs/simd-adler32">
+ <img alt="docs.rs badge" src="https://img.shields.io/docsrs/simd-adler32?style=flat-square">
+ </a>
+ <a href="https://crates.io/crates/simd-adler32">
+ <img alt="crates.io badge" src="https://img.shields.io/crates/v/simd-adler32?style=flat-square">
+ </a>
+ <a href="https://github.com/mcountryman/simd-adler32/blob/main/LICENSE.md">
+ <img alt="mit license badge" src="https://img.shields.io/github/license/mcountryman/simd-adler32?style=flat-square">
+ </a>
+</p>
+
+A SIMD-accelerated Adler-32 hash algorithm implementation.
+
+## Features
+
+- No dependencies
+- Support `no_std` (with `default-features = false`)
+- Runtime CPU feature detection (when `std` enabled)
+- Blazing fast performance on as many targets as possible (currently only x86 and x86_64)
+- Default to scalar implementation when simd not available
+
+## Quick start
+
+> Cargo.toml
+
+```toml
+[dependencies]
+simd-adler32 = "*"
+```
+
+> example.rs
+
+```rust
+use simd_adler32::Adler32;
+
+let mut adler = Adler32::new();
+adler.write(b"rust is pretty cool, man");
+let hash = adler.finish();
+
+println!("{}", hash);
+// 1921255656
+```
+
+## Support
+
+**CPU Features**
+
+| impl | arch | feature |
+| ---- | ---------------- | ------- |
+| ✅ | `x86`, `x86_64` | avx512 |
+| ✅ | `x86`, `x86_64` | avx2 |
+| ✅ | `x86`, `x86_64` | ssse3 |
+| ✅ | `x86`, `x86_64` | sse2 |
+| 🚧 | `arm`, `aarch64` | neon |
+| ✅ | `wasm32` | simd128 |
+
+**MSRV** `1.36.0`\*\*
+
+Minimum supported rust version is tested before a new version is published. [**] Feature
+`const-generics` needs to disabled to build on rustc versions `<1.51` which can be done
+by updating your dependency definition to the following.
+
+> Cargo.toml
+
+```toml
+[dependencies]
+simd-adler32 = { version "*", default-features = false, features = ["std"] }
+```
+
+## Performance
+
+Benchmarks listed display number of randomly generated bytes (10k / 100k) and library
+name. Benchmarks sources can be found under the [bench](/bench) directory. Crates used for
+comparison are [adler](https://crates.io/crates/adler) and
+[adler32](https://crates.io/crates/adler32).
+
+> Windows 10 Pro - Intel i5-8300H @ 2.30GHz
+
+| name | avg. time | avg. thrpt |
+| ----------------------- | --------------- | ------------------ |
+| **10k/simd-adler32** | **212.61 ns** | **43.805 GiB/s** |
+| 10k/wuffs | 3843 ns | 2.63 GiB/s\* |
+| 10k/adler32 | 4.8084 us | 1.9369 GiB/s |
+| 10k/adler | 17.979 us | 530.43 MiB/s |
+| ----------------------- | --------------- | ------------------ |
+| **100k/simd-adler32** | **2.7951 us** | **33.320 GiB/s** |
+| 100k/wuffs | 34733 ns | 2.6814 GiB/s\* |
+| 100k/adler32 | 48.488 us | 1.9207 GiB/s |
+| 100k/adler | 178.36 us | 534.69 MiB/s |
+
+\* wuffs ran using mingw64/gcc, ran with `wuffs bench -ccompilers=gcc -reps=1 -iterscale=300 std/adler32`.
+
+> MacBookPro16,1 - Intel i9-9880H CPU @ 2.30GHz
+
+| name | avg. time | avg. thrpt |
+| ----------------------- | --------------- | ------------------ |
+| **10k/simd-adler32** | **200.37 ns** | **46.480 GiB/s** |
+| 10k/adler32 | 4.1516 us | 2.2433 GiB/s |
+| 10k/adler | 10.220 us | 933.15 MiB/s |
+| ----------------------- | --------------- | ------------------ |
+| **100k/simd-adler32** | **2.3282 us** | **40.003 GiB/s** |
+| 100k/adler32 | 41.130 us | 2.2643 GiB/s |
+| 100k/adler | 83.776 us | 534.69 MiB/s |
+
+## Safety
+
+This crate contains a significant amount of `unsafe` code due to the requirement of `unsafe`
+for simd intrinsics. Fuzzing is done on release and debug builds prior to publishing via
+`afl`. Fuzzy tests can be found under [fuzz](/fuzz) the directory.
+
+## Resources
+
+- [LICENSE](./LICENSE.md) - MIT
+- [CHANGELOG](./CHANGELOG.md)
+
+## Credits
+
+Thank you to the contributors of the following projects.
+
+- [adler](https://github.com/jonas-schievink/adler)
+- [adler32](https://github.com/remram44/adler32-rs)
+- [crc32fast](https://github.com/srijs/rust-crc32fast)
+- [wuffs](https://github.com/google/wuffs)
+- [chromium](https://bugs.chromium.org/p/chromium/issues/detail?id=762564)
+- [zlib](https://zlib.net/)
+
+## Contributing
+
+Feel free to submit a issue or pull request. :smile: