@chainsafe/fast-crc32c

中文文档
4.2.0发布于 2025/01/28MITTypeScriptCommonJS零依赖近 30 天下载 1.8万

CRC32C algorithm with hardware acceleration and software fallback.

原始使用文档
文档目录4 节
  1. Performance
  2. Benchmark
  3. Install
  4. Usage

fast-crc32c NPM version Build Status Dependency Status Coverage Status

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)
1024B16836819B, avg 2055B
sse4_crc32c_hw3,210,508 ops/sec252 ops/sec
sse4_crc32c_sw1,358,720 ops/sec96.41 ops/sec
js_crc32c409,615 ops/sec26.00 ops/sec
js_crc32403,262 ops/sec24.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

版本与发布记录

@chainsafe/fast-crc32c 共发布 5 个版本,首次发布于 2021/05/26;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.2.0latest2025/01/281.8 年前
4.1.12023/06/063 年前
4.1.02023/06/063 年前
4.0.02023/01/123 年前
3.0.02021/05/265 年前

关于 @chainsafe/fast-crc32c 的常见问题

@chainsafe/fast-crc32c 是什么?

CRC32C algorithm with hardware acceleration and software fallback.

如何安装 @chainsafe/fast-crc32c?

在项目目录运行 npm install @chainsafe/fast-crc32c,或使用 pnpm add / yarn add / bun add。

@chainsafe/fast-crc32c 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chainsafe/fast-crc32c 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@chainsafe/fast-crc32c 可以商用吗?

@chainsafe/fast-crc32c 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chainsafe/fast-crc32c 的下载量有多少?

根据 npm 官方下载统计,@chainsafe/fast-crc32c 在 2026/10/10 – 2026/11/08 这 30 天内被下载 18,198 次,日均约 607 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chainsafe/fast-crc32c 还在维护吗?

最新版本 4.2.0 发布于 2025/01/28(1.8 年前);至今共发布 5 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/05/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。