快转32c

fast-crc32c是用于节点.js的CRC-32C算法执行 硬件加速(通过) 挥发器/sse4 crc32 以Anand Suresh盟誓 当硬件加速失败时返回到软件执行中.
业绩
CRC-32C更快,然后是CRC-32, 这可以利用 CPU 的全部操作 注册宽度(64bit),而不是CRC-32的8bit.
当使用硬件加速时,CRC-32C比软件快7x~9x左右 已实施CRC-32C.
基准
3项经过测试的实施是:
- se4 crc32c (中文(简体) ) 硬件加速 CRC-32C se4 曲线32
- js crc32c (中文(简体) ) Javascript 已执行 CRC-32C
- js 弧点32 Javascript 已执行 CRC-32 from 缓冲-弧32
$ 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项行动/秒 | 252 行动/sec |
| sse4 crc32c sw (中文(简体) ) | 1 358 720项行动/sec | 96.41 行动/sec |
| js crc32c (中文(简体) ) | 409,615项行动/sec | 26.00 行动/sec |
| js 弧点32 | 403 262项行动/sec | 24.82 行动/sec |
安装
npm install fast-crc32c@^2.0.0 --save
# For node version before 6
# npm install fast-crc32c@^1.0.0 --save
使用量
var crc32 = require('fast-crc32c');
var result = crc32.calculate(data, initial);
- 数据 需要, StringQ 缓冲, 需要消化的数据
- 初次 可选,编号,初始CRC-32C摘要