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) {
crc = SSE4CRC32.update(string);
});
crc = SSE4CRC32.crc(); // The .crc() method can also be used to get the final 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