close

@node-rs/crc32

License
MIT
Deps
0
Install Size
15.9 kB(537.2 kB)
Vulns
0
Published

Get started

$npm install @node-rs/crc32
$pnpm add @node-rs/crc32
$yarn add @node-rs/crc32
$bun add @node-rs/crc32
$deno add npm:@node-rs/crc32
$vlt install @node-rs/crc32
$vp add @node-rs/crc32

Readme

@node-rs/crc32

Image Image

Fastest crc32 implement in Node.js

The 4 tested implementations are:

  • @node-rs/crc32 Hardware accelerated CRC-32C from crc32fast
  • sse4_crc32c Hardware accelerated CRC-32C from sse4_crc32
  • js_crc32c Javascript implemented CRC-32C
  • js_crc32 Javascript implemented CRC-32 from buffer-crc32

Performance

@node-rs/crc32 for inputs 1024B x 5,108,123 ops/sec ±1.86% (89 runs sampled)
@node-rs/crc32 for inputs 16931844B, avg 2066B x 271 ops/sec ±1.15% (85 runs sampled)
sse4_crc32c_hw for inputs 1024B x 3,543,443 ops/sec ±1.39% (93 runs sampled)
sse4_crc32c_hw for inputs 16931844B, avg 2066B x 209 ops/sec ±0.78% (76 runs sampled)
sse4_crc32c_sw for inputs 1024B x 1,460,284 ops/sec ±2.35% (90 runs sampled)
sse4_crc32c_sw for inputs 16931844B, avg 2066B x 93.50 ops/sec ±2.43% (69 runs sampled)
js_crc32c for inputs 1024B x 464,681 ops/sec ±0.46% (91 runs sampled)
js_crc32c for inputs 16931844B, avg 2066B x 28.25 ops/sec ±1.64% (51 runs sampled)
js_crc32 for inputs 1024B x 442,272 ops/sec ±2.66% (93 runs sampled)
js_crc32 for inputs 16931844B, avg 2066B x 22.12 ops/sec ±5.20% (40 runs sampled)
+---------------------+-------------------+----------------------+
| 1024B 16931844B, avg 2066B |
+---------------------+-------------------+----------------------+
| @node-rs/crc32 5,108,123 ops/sec 271 ops/sec          |
+---------------------+-------------------+----------------------+
| sse4_crc32c_hw 3,543,443 ops/sec 209 ops/sec          |
+---------------------+-------------------+----------------------+
| sse4_crc32c_sw 1,460,284 ops/sec 93.50 ops/sec        |
+---------------------+-------------------+----------------------+
| js_crc32c 464,681 ops/sec 28.25 ops/sec        |
+---------------------+-------------------+----------------------+
| js_crc32 442,272 ops/sec 22.12 ops/sec        |
+---------------------+-------------------+----------------------+

API

The type of input initial crc and output crc number is u32

export function crc32(input: Buffer, crc?: number): number
export function crc32c(input: Buffer, crc?: number): number

Usage

const { crc32 } = require('@node-rs/crc32')
const { readFileSync } = require('fs')

const content = readFileSync('./avatar.png')

crc32(content)