Skip to content

Commit 7a72cc6

Browse files
first commit
0 parents  commit 7a72cc6

19 files changed

+7008
-0
lines changed

.editorconfig

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# http://editorconfig.org
2+
root = true
3+
4+
[*]
5+
indent_style = space
6+
indent_size = 2
7+
end_of_line = lf
8+
charset = utf-8
9+
trim_trailing_whitespace = true
10+
insert_final_newline = true

.eslintignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
coverage
2+
/node_modules

.gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* text=auto
2+
*.js text eol=lf

.gitignore

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
8+
# Runtime data
9+
pids
10+
*.pid
11+
*.seed
12+
*.pid.lock
13+
14+
# Directory for instrumented libs generated by jscoverage/JSCover
15+
lib-cov
16+
17+
# Coverage directory used by tools like istanbul
18+
coverage
19+
20+
# nyc test coverage
21+
.nyc_output
22+
23+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24+
.grunt
25+
26+
# Bower dependency directory (https://bower.io/)
27+
bower_components
28+
29+
# node-waf configuration
30+
.lock-wscript
31+
32+
# Compiled binary addons (http://nodejs.org/api/addons.html)
33+
build/Release
34+
35+
# Dependency directories
36+
/node_modules
37+
jspm_packages/
38+
39+
# Typescript v1 declaration files
40+
typings/
41+
42+
# Optional npm cache directory
43+
.npm
44+
45+
# Optional eslint cache
46+
.eslintcache
47+
48+
# Optional REPL history
49+
.node_repl_history
50+
51+
# Output of 'npm pack'
52+
*.tgz
53+
54+
# Yarn Integrity file
55+
.yarn-integrity
56+
57+
# dotenv environment variables file
58+
.env
59+
60+
# IDEs
61+
.idea
62+
.DS_Store
63+
.vscode
64+
*sublime*
65+
66+
# perf
67+
68+
perf.data*
69+
.jest-cache

.npmignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
test
2+
testing
3+
coverage

.travis.yml

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
sudo: false
2+
language: node_js
3+
node_js:
4+
- "10"
5+
- "8"
6+
- "6"
7+
8+
script: npm run test-ci
9+
before_install:
10+
- npm install -g npm@6
11+
- npm install -g --production coveralls
12+
after_script:
13+
- cat ./coverage/lcov.info | coveralls

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2018 Dmitriy Tsvettsikh
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

benchmark/crc32.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict';
2+
3+
const crc = require('crc/lib/crc32');
4+
const crc32 = require('../crc32');
5+
6+
const testbuf = Buffer.allocUnsafe(1024 * 4);
7+
8+
console.time('crc');
9+
for (let i = 0; i < 1e5; ++i) {
10+
crc(testbuf);
11+
}
12+
console.timeEnd('crc');
13+
14+
console.time('turbo-crc32');
15+
for (let i = 0; i < 1e5; ++i) {
16+
crc32(testbuf);
17+
}
18+
console.timeEnd('turbo-crc32');

crc32.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
const { createSlicedTable } = require('./src/create-table');
4+
const crc32By8 = require('./src/crc32-by-8');
5+
6+
const CRC32_LOOKUP = createSlicedTable(0xedb88320);
7+
8+
module.exports = crc32;
9+
10+
/**
11+
* Compute CRC32 using slicing-by-n algorithm.
12+
* @param {Buffer|string} source
13+
* @returns {number}
14+
*/
15+
function crc32(source) {
16+
const buf = Buffer.isBuffer(source) ? source : Buffer.from(source);
17+
18+
return (crc32By8(CRC32_LOOKUP, buf, 0xffffffff, 0) ^ 0xffffffff) >>> 0;
19+
}

crc32c.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
const { createSlicedTable } = require('./src/create-table');
4+
const crc32By8 = require('./src/crc32-by-8');
5+
6+
const CRC32C_LOOKUP = createSlicedTable(0x82f63b78);
7+
8+
module.exports = crc32c;
9+
10+
/**
11+
* Compute CRC32C using slicing-by-n algorithm.
12+
* @param {Buffer|string} source
13+
* @returns {number}
14+
*/
15+
function crc32c(source) {
16+
const buf = Buffer.isBuffer(source) ? source : Buffer.from(source);
17+
18+
return (crc32By8(CRC32C_LOOKUP, buf, 0xffffffff, 0) ^ 0xffffffff) >>> 0;
19+
}

docs/proposal.pdf

926 KB
Binary file not shown.

0 commit comments

Comments
 (0)