测试源码:
下面的代码是从Hadoop 2.0.3中PureJavaCrc32C.java中取出来的:
A pure-java implementation of the CRC32 checksum that uses
the CRC32-C polynomial, the same polynomial used by iSCSI
and implemented on many Intel chipsets supporting SSE4.2.
#include"Crc32Table.h"
#include<stdint.h>
#include<stdlib.h>
#include<sys/time.h>
#define TEST_SIZE (64<<10)
#define BLOCK_SIZE 512
/* Pure Crc32 */
uint32_t crc32(char b[], int off, int len) {
static uint32_t crc = 0xffffffff;
uint32_t localCrc = crc;
while(len > 7) {
const int c0 =(b[off+0] ^ localCrc) & 0xff;
const int c1 =(b[off+1] ^ (localCrc >>= 8)) & 0xff;
const int c2 =(b[off+2] ^ (localCrc >>= 8)) & 0xff;
const int c3 =(b[off+3] ^ (localCrc >>= 8)) & 0xff;
localCrc = (T[T8_7_start +