fast-crc32c

WebJar for fast-crc32c

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

fast-crc32c
Last Version

Last Version

1.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

fast-crc32c
WebJar for fast-crc32c
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/ashi009/node-fast-crc32c

Download fast-crc32c

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/fast-crc32c/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>fast-crc32c</artifactId>
    <version>1.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/fast-crc32c/
implementation 'org.webjars.npm:fast-crc32c:1.0.2'
// https://jarcasting.com/artifacts/org.webjars.npm/fast-crc32c/
implementation ("org.webjars.npm:fast-crc32c:1.0.2")
'org.webjars.npm:fast-crc32c:jar:1.0.2'
<dependency org="org.webjars.npm" name="fast-crc32c" rev="1.0.2">
  <artifact name="fast-crc32c" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='fast-crc32c', version='1.0.2')
)
libraryDependencies += "org.webjars.npm" % "fast-crc32c" % "1.0.2"
[org.webjars.npm/fast-crc32c "1.0.2"]

Dependencies

compile (1)

Group / Artifact Type Version
org.webjars.npm : sse4_crc32 jar [5.0.0,6)

Project Modules

There are no modules declared in this project.

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)
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

Versions

Version
1.0.2