1.0.0 • Published 3 years ago

fast-encoding v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

fast-encoding

CI NPM Bundlephobia

Fast, cross-platform, small and easy-to-use base64 and hex encoding.

Performance

it's always faster than native Buffer for any size of data.

Result is located in bench/result.txt.

Tested on i7-9700k, node v16.9.1.

Hex decoding

~25x faster than js. ~3.7x faster than native buffer.

Hex encoding

~60x faster than js. ~1.4x faster than native buffer.

Base64 decoding

~8x faster than js. ~3.9x faster than native buffer.

Base64 encoding

~22x faster than js. ~1.4x faster than native buffer.

Usage

import { base64, hex } from 'fast-encoding';
// for deno import { base64, hex } from 'https://esm.sh/fast-encoding';

const buf = new Uint8Array([0, 1, 2, 3]);

// base64 encoding and decoding
base64.encode(buf) === 'AAECAw==';
base64.decode('AAECAw==') === buf;

// hex encoding and decoding
hex.encode(buf) === '00010203';
hex.decode('00010203') === buf;

Platform

Either Buffer or TextEncoder is required. WebAssembly is optional.

Docs

interface BinaryEncoding {
  // same as buffer.toString('encoding')
  encode(data: ArrayBufferView | ArrayBuffer | string): string;

  // same as Buffer.from(data, 'encoding')
  decode(data: string): Uint8Array;
}

export const base64: BinaryEncoding;
export const hex: BinaryEncoding;

Special Thanks

fastest base64 algorithm https://github.com/aqrit/base64 (BSD-2)

wasm concept https://github.com/mitschabaude/fast-base64 (MIT)