# ๐ Base 64
โจ SIMD-accelerated Base64 for Rust โจ
## ๐ Features
- ๐ก Uses AVX2 instructions for super-fast encoding and decoding
- ๐ Fallback when AVX2 is unavailable uses any available SIMD
## ๐ฏ Project goals
- ๐ง Simple, idiomatic API
- ๐ฆ Sensible defaults
- โก Fast
## Usage
```rust
use bs64;
fn main() {
// Encode
let input = vec![2, 3, 4, 5];
let output: String = bs64::encode(&input);
// Decode
let decoded_output = bs64::decode(output.as_bytes());
}
```
## Benchmarks
Ran using 100k inputs, 10000 iterations on an Intelยฎ Coreโข i7-1065G7:
```
cargo run --features "cli" --release -- -b 100000 -i 10000
```
### Encode
|๐ **bs64::encode()** | 4813.70
|๐ **bs64::encode_mut()**| 6579.17
|๐ **bs64 fallback** | 944.18
|data_encoding | 858.51
|data_encoding mut | 873.28
|base64 | 748.02
|base64 mut | 870.99
## Decode
| ๐ **bs64::decode()** | 3899.26 |
| ๐ **bs64::decode_mut()** | 3965.25 |
| ๐ **bs64 fallback** | 837.17 |
| data_encoding | 647.33 |
| data_encoding mut | 684.01 |
| base64 | 761.68 |
| base64 mut | 805.60 |
## TODO
- [x] Integration tests
- [x] Benchmarking suite
- [ ] Regression tests + benchmark in Github Actions
- [ ] Change default implementation with feature flags
- [ ] Builders for custom configs at runtime