|
1 | 1 | var o = "foo bar baz٪☃🍣";
|
2 | 2 | var m = "foobar"; for(var i = 0; i != 11; ++i) m+=m;
|
| 3 | +var m1 = m + m, m2 = m1 + m1, m3 = m2 + m2, m4 = m3 + m3; |
| 4 | +var M1 = m + "𝑹" + m, M2 = M1 + "𝐀" + M1, M3 = M2 + "𝓜" + M2, M4 = M3 + "𝙖" + M3; |
3 | 5 | var bits = [
|
4 | 6 | [ "foobar", -1628037227, 1 ],
|
5 | 7 | [ "foo bar baz", -228401567, 1 ],
|
6 | 8 | [ "foo bar baz٪", 984445192 ],
|
7 | 9 | [ "foo bar baz٪☃", 140429620],
|
8 | 10 | [ m, 40270464, 1 ],
|
9 |
| - [ o, 1531648243], |
| 11 | + [ m1, -239917269, 1], |
| 12 | + [ m2, 2048324365, 1 ], |
| 13 | + [ m3, -1695517393, 1 ], |
| 14 | + [ m4, 1625284864, 1 ], |
| 15 | + [ M1, 642113519 ], |
| 16 | + [ M2, -1441250016 ], |
| 17 | + [ M3, -1101021992 ], |
| 18 | + [ M4, -1610723860 ], |
| 19 | + [ o, 1531648243 ], |
10 | 20 | [ o+o, -218791105 ],
|
11 | 21 | [ o+o+o, 1834240887 ]
|
12 | 22 | ];
|
@@ -35,131 +45,6 @@ declare module 'printj' {
|
35 | 45 | declare function sprintf(fmt:string, ...args:any):string;
|
36 | 46 | };
|
37 | 47 | */
|
38 |
| -/* vim: set ts=2: */ |
39 |
| -if(typeof require !== 'undefined') { |
40 |
| -var js_crc32 = require('../'); |
41 |
| -var js_crc32_old = require('crc-32'); |
42 |
| -var buffer_crc32 = require('./buffer-crc32'); |
43 |
| -var crc32 = require('./crc32'); |
44 |
| -var node_crc = require('./node-crc'); |
45 |
| - |
46 |
| -function z1(bstr) { return js_crc32.bstr(bstr); } |
47 |
| -function z2(bstr) { return buffer_crc32.signed(bstr); } |
48 |
| -function z3(bstr) { return crc32(bstr); } |
49 |
| -function z4(bstr) { return node_crc.crc32(bstr)|0;} |
50 |
| -function z5(bstr) { return js_crc32_old.bstr(bstr); } |
51 |
| - |
52 |
| -function b1(buf) { return js_crc32.buf(buf); } |
53 |
| -function b2(buf) { return buffer_crc32.signed(buf); } |
54 |
| -function b3(buf) { return crc32(buf); } |
55 |
| -function b4(buf) { return node_crc.crc32(buf)|0; } |
56 |
| -function b5(buf) { return js_crc32_old.buf(buf); } |
57 |
| - |
58 |
| -function u1(str) { return js_crc32.str(str); } |
59 |
| -function u2(str) { return buffer_crc32.signed(str); } |
60 |
| -function u3(str) { return js_crc32_old.str(str); } |
61 |
| - |
62 |
| -var ntests, len_max, do_bstr, do_buf, do_ustr; |
63 |
| -switch(process.env.MODE) { |
64 |
| - case "A": ntests = 100000; len_max = 256; break; |
65 |
| - case "B": ntests = 10000; len_max = 1024; break; |
66 |
| - case "C": ntests = 10000; len_max = 4096; break; |
67 |
| - case "D": ntests = 1000; len_max = 16384; break; |
68 |
| - case "E": ntests = 1000; len_max = 65536; break; |
69 |
| - case "F": ntests = 100; len_max = 262144; break; |
70 |
| - case "G": ntests = 100; len_max = 1048576; break; |
71 |
| - case "H": ntests = 10; len_max = 4194304; break; |
72 |
| - case "I": ntests = 10; len_max = 16777216; break; |
73 |
| - default: ntests = 10000; len_max = 1024; break; |
74 |
| -} |
75 |
| - |
76 |
| -if(process.argv === 2) do_bstr = do_buf = do_ustr = true; |
77 |
| -else { |
78 |
| - do_bstr = process.argv[2].indexOf("S") > -1; |
79 |
| - do_buf = process.argv[2].indexOf("B") > -1; |
80 |
| - do_ustr = process.argv[2].indexOf("U") > -1; |
81 |
| - if(!do_bstr && !do_buf && !do_ustr) do_bstr = do_buf = do_ustr = true; |
82 |
| -} |
83 |
| - |
84 |
| -var btest = !!do_bstr || !!do_buf, utest = !!do_ustr; |
85 |
| - |
86 |
| -var bstr_tests = []; |
87 |
| -var ustr_tests = []; |
88 |
| -var len_min = 1; |
89 |
| - |
90 |
| -var corpus = new Array(0x0800); |
91 |
| -for(var k = 0; k < 0x0800; ++k) corpus[k] = String.fromCharCode(k) |
92 |
| -len_max --; |
93 |
| - |
94 |
| -k = (Math.random()*0x800)|0; |
95 |
| -for(var i = 0; i < ntests; ++i) { |
96 |
| - var l = (Math.random() * (len_max - len_min))|0 + len_min; |
97 |
| - var s = new Array(l), t = new Array(l); |
98 |
| - if(btest) for(var j = 0; j < l; ++j) s[j] = corpus[(i+j+k)&127]; |
99 |
| - if(utest) for(var j = 0; j < l; ++j) t[j] = corpus[(i+j+k)&0x7FF]; |
100 |
| - var ss = s.join(""); |
101 |
| - bstr_tests[i] = [ss, new Buffer(ss)]; |
102 |
| - ustr_tests[i] = t.join(""); |
103 |
| -} |
104 |
| - |
105 |
| -var assert = require('assert'); |
106 |
| -function fix(str) { return parseInt(str, 16)|0; } |
107 |
| -if(btest) for(var j = 0; j != ntests; ++j) { |
108 |
| - if(do_bstr && do_buf) assert.equal(z1(bstr_tests[j][0]), b1(bstr_tests[j][1])); |
109 |
| - |
110 |
| - if(do_bstr) { |
111 |
| - assert.equal(z1(bstr_tests[j][0]), z2(bstr_tests[j][0])); |
112 |
| - assert.equal(z1(bstr_tests[j][0]), fix(z3(bstr_tests[j][0]))); |
113 |
| - assert.equal(z1(bstr_tests[j][0]), (z4(bstr_tests[j][0]))); |
114 |
| - assert.equal(z1(bstr_tests[j][0]), z5(bstr_tests[j][0])); |
115 |
| - } |
116 |
| - |
117 |
| - if(do_buf) { |
118 |
| - assert.equal(b1(bstr_tests[j][1]), b2(bstr_tests[j][1])); |
119 |
| - assert.equal(b1(bstr_tests[j][1]), fix(b3(bstr_tests[j][1]))); |
120 |
| - assert.equal(b1(bstr_tests[j][1]), (b4(bstr_tests[j][1]))); |
121 |
| - assert.equal(b1(bstr_tests[j][1]), b5(bstr_tests[j][1])); |
122 |
| - } |
123 |
| -} |
124 |
| -if(utest) for(var j = 0; j != ntests; ++j) { |
125 |
| - assert.equal(u1(ustr_tests[j]), u2(ustr_tests[j])); |
126 |
| - assert.equal(u1(ustr_tests[j]), u3(ustr_tests[j])); |
127 |
| -} |
128 |
| - |
129 |
| -var BM = require('../perf/bm'); |
130 |
| - |
131 |
| -if(do_bstr) { |
132 |
| -var suite = new BM('binary string (' + len_max + ')'); |
133 |
| -suite.add('js-crc32', function() { for(var j = 0; j != ntests; ++j) z1(bstr_tests[j][0]); }); |
134 |
| -suite.add('js-crc32-old', function() { for(var j = 0; j != ntests; ++j) z5(bstr_tests[j][0]); }); |
135 |
| -suite.add('buffer-crc32', function() { for(var j = 0; j != ntests; ++j) z2(bstr_tests[j][0]); }); |
136 |
| -if(len_max < 4096) { |
137 |
| - suite.add('crc32', function() { for(var j = 0; j != ntests; ++j) z3(bstr_tests[j][0]); }); |
138 |
| - suite.add('node_crc', function() { for(var j = 0; j != ntests; ++j) z4(bstr_tests[j][0]); }); |
139 |
| -} |
140 |
| -suite.run(); |
141 |
| -} |
142 |
| - |
143 |
| -if(do_buf) { |
144 |
| -suite = new BM('buffer (' + len_max + ')'); |
145 |
| -suite.add('js-crc32', function() { for(var j = 0; j != ntests; ++j) b1(bstr_tests[j][1]); }); |
146 |
| -suite.add('js-crc32-old', function() { for(var j = 0; j != ntests; ++j) b5(bstr_tests[j][1]); }); |
147 |
| -suite.add('buffer-crc32', function() { for(var j = 0; j != ntests; ++j) b2(bstr_tests[j][1]); }); |
148 |
| -if(len_max < 1024) { |
149 |
| - suite.add('crc32', function() { for(var j = 0; j != ntests; ++j) b3(bstr_tests[j][1]); }); |
150 |
| - suite.add('node_crc', function() { for(var j = 0; j != ntests; ++j) b4(bstr_tests[j][1]); }); |
151 |
| -} |
152 |
| -suite.run(); |
153 |
| -} |
154 |
| - |
155 |
| -if(do_ustr) { |
156 |
| -var suite = new BM('unicode string (' + len_max + ')'); |
157 |
| -suite.add('js-crc32', function() { for(var j = 0; j != ntests; ++j) u1(ustr_tests[j]); }); |
158 |
| -suite.add('js-crc32-old', function() { for(var j = 0; j != ntests; ++j) u3(ustr_tests[j]); }); |
159 |
| -suite.add('buffer-crc32', function() { for(var j = 0; j != ntests; ++j) u2(ustr_tests[j]); }); |
160 |
| -suite.run(); |
161 |
| -} |
162 |
| -} |
163 | 48 | crc32table = [
|
164 | 49 | 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
|
165 | 50 | 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
|
|
0 commit comments