Package Exports
- @owncoral/fast-crc32c
- @owncoral/fast-crc32c/loader.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@owncoral/fast-crc32c) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
fast-crc32c

fast-crc32c is a CRC-32C algorithm implementation for node.js, which uses hardware acceleration (via voxer/sse4_crc32 by Anand Suresh), and fallback to software implementation when hardware acceleration fails.
Performance
CRC-32C is faster then CRC-32, which could take advantage of full CPU operand register width (64bit) instead of CRC-32's 8bit.
When using hardware acceleration, CRC-32C is about 7x ~ 9x faster than software implemented CRC-32C.
Benchmark
The 3 tested implementations are:
- sse4_crc32c Hardware accelerated CRC-32C from sse4_crc32
- js_crc32c Javascript implemented CRC-32C
- js_crc32 Javascript implemented CRC-32 from buffer-crc32
$ yarn run benchmark
yarn run v1.17.3
$ node benchmark
sse4_crc32c_hw for inputs 1024B x 3,210,508 ops/sec ±2.09% (87 runs sampled)
sse4_crc32c_hw for inputs 16836819B, avg 2055B x 252 ops/sec ±2.90% (79 runs sampled)
sse4_crc32c_sw for inputs 1024B x 1,358,720 ops/sec ±1.31% (89 runs sampled)
sse4_crc32c_sw for inputs 16836819B, avg 2055B x 96.41 ops/sec ±1.42% (71 runs sampled)
js_crc32c for inputs 1024B x 409,615 ops/sec ±1.46% (89 runs sampled)
js_crc32c for inputs 16836819B, avg 2055B x 26.00 ops/sec ±0.72% (47 runs sampled)
js_crc32 for inputs 1024B x 403,262 ops/sec ±1.55% (90 runs sampled)
js_crc32 for inputs 16836819B, avg 2055B x 24.82 ops/sec ±1.70% (45 runs sampled)
1024B | 16836819B, avg 2055B | |
---|---|---|
sse4_crc32c_hw | 3,210,508 ops/sec | 252 ops/sec |
sse4_crc32c_sw | 1,358,720 ops/sec | 96.41 ops/sec |
js_crc32c | 409,615 ops/sec | 26.00 ops/sec |
js_crc32 | 403,262 ops/sec | 24.82 ops/sec |
Install
npm install fast-crc32c@^2.0.0 --save
# For node version before 6
# npm install fast-crc32c@^1.0.0 --save
Usage
var crc32 = require('fast-crc32c');
var result = crc32.calculate(data, initial);
- data required, String|Buffer, data to digest
- initial optional, Number, initial CRC-32C digest