我添加了一个辅助函数来创建CRCTable,而不是在代码中包含大量字面量。它也可以用于一次创建表并将其保存在对象或变量中,并用crc32函数使用该表(或作为W3C的示例,检查是否存在并在必要时创建)。我还更新了jsPerf,以使用CRCtable与文字字符串,文字数组,保存的窗口变量和动态指针进行比较(此处显示的示例)。
var makeCRCTable = function(){
var c;
var crcTable = [];
for(var n =0; n < 256; n++){
c = n;
for(var k =0; k < 8; k++){
c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
}
crcTable[n] = c;
}
return crcTable;
}
var crc32 = function(str) {
var crcTable = window.crcTable || (window.crcTable = makeCRCTable());
var crc = 0 ^ (-1);
for (var i = 0; i < str.length; i++ ) {
crc = (crc >>> 8) ^ crcTable[(crc ^ str.charCodeAt(i)) & 0xFF];
}
return (crc ^ (-1)) >>> 0;
};
这是性能差异的链接:http : //jsperf.com/js-crc32
好吧,这是我对此的射击。我认为读取数组比对它进行子串化要快。
但是警告,我在这些示例中放弃使用Utf8Encode函数来简化测试。毕竟,这些只是示例而已,只是其中的粗略示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句