UNPKG

sse4_crc32

Version:

Hardware-accelerated CRC-32C with software fallback

58 lines (54 loc) 2.04 kB
/** * @file Benchmarks using a single fixed-size buffer * * @author Anand Suresh <anand.suresh@gmail.com> * @copyright Copyright (C) 2018-present Anand Suresh. All rights reserved. * @license MIT */ const Crc32C = require('..') const jsCrc32 = require('crc32') /** * The input buffer for the CRC-benchmarks * @type {Buffer} */ const TEST_BUFFER = Buffer.from(`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mollis cursus metus vel tristique. Proin congue massa massa, a malesuada dolor ullamcorper a. Nulla eget leo vel orci venenatis placerat. Donec semper condimentum justo, vel sollicitudin dolor consequat id. Nunc sed aliquet felis, eget congue nisi. Mauris eu justo suscipit, elementum turpis ut, molestie tellus. Mauris ornare rutrum fringilla. Nulla dignissim luctus pretium. Nullam nec eros hendrerit sapien pellentesque sollicitudin. Integer eget ligula dui. Mauris nec cursus nibh. Nunc interdum elementum leo, eu sagittis eros sodales nec. Duis dictum nulla sed tincidunt malesuada. Quisque in vulputate sapien. Sed sit amet tellus a est porta rhoncus sed eu metus. Mauris non pulvinar nisl, volutpat luctus enim. Suspendisse est nisi, sagittis at risus quis, ultricies rhoncus sem. Donec ullamcorper purus eget sapien facilisis, eu eleifend felis viverra. Suspendisse elit neque, semper aliquet neque sed, egestas tempus leo. Duis condimentum turpis duis.`) /** * The set of tests to run * @type {Array} */ module.exports = { title: 'single fixed-size buffer', iterations: 10000, tests: [{ title: 'Native SSE 4.2 CRC-32C', fn: () => { if (Crc32C.hardware_support === true) { return Crc32C.sse42_crc(TEST_BUFFER) } else { throw Error('Not supported') } } }, { title: 'Native Table-based CRC-32C', fn: () => Crc32C.table_crc(TEST_BUFFER) }, { title: 'JavaScript (table-based) CRC-32C', fn: () => jsCrc32(TEST_BUFFER, false) }, { title: 'JavaScript (direct) CRC-32C', fn: () => jsCrc32(TEST_BUFFER, true) }] }