bs64 0.1.1

SIMD-accelerated Base64 encoding and decoding library
Documentation

๐Ÿš€ Base 64

Docs

โœจ 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

Installation

cargo add bs64

Usage

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. Comparisons are made against base64 and data-encoding crates.

cargo run --features "cli" --release -- -b 100000 -i 10000

Encode

name MB/s
๐Ÿš€ 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

name MB/s
๐Ÿš€ 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

  • Integration tests
  • Benchmarking suite
  • Regression tests + benchmark in Github Actions
  • Change default implementation with feature flags
  • Builders for custom configs at runtime