SSE4-CRC32
Nehalam-based Intel processors feature the Streaming SIMD Extensions instruction set which provide a
hardware-accelerated version of the CRC32 algorithm (Castagnoli variant). This library uses the Intel SSE 4.2
instruction set to provide a fast CRC-32 algorithm.
Features
- Intel Streaming SIMD Extensions 4.2 based hardware accelerated CRC 32 calculation
- Progressive CRC32 calculation
- Supports Node.js buffers
Usage
Using the library is quite simple. Start out by including the library in your code:
var SSE4CRC32 = require("sse4_crc32");
To calculate the 32-bit CRC for any string, simply use the following code:
var crc = SSE4CRC32.calculate("my string");
Instead of passing in a string, a buffer can be passed to the calculate()
function.
To calculate CRC in a progressive manner, use the code snippet:
var SSE4CRC32 = new SSE4CRC32.CRC32(),
my_inputs = [ "some string", new Buffer("a buffer"), "yet another string", new Buffer("yet another buffer") ],
crc;
my_inputs.forEach(function (string) {
SSE4CRC32.update(string);
});
crc = SSE4CRC32.crc();
Also see the example code in the examples
directory.
How to compile
Once the repository has been cloned, use one of the following commands to build the library:
make all // Builds the release version of the library and runs all tests
make debug // Builds the debug version of the library
make clean // Removes all files generated by builds
Contact
All feedback/suggestions/criticisms can be directed to Anand Suresh