#include #include #include #include #include #include #include #include "aitcrc.h" int main() { int i, f; u_int n; char szLine[256], szAvalanche[][2] = { { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 }, { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 } }; struct timeval before, after; f = open("/dev/urandom", O_RDONLY); if (f == -1) return 1; // hash_varchar gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); hash_varchar(szLine, 256, 1); // printf("%u\n", hash_varchar(szLine, 256)); } gettimeofday(&after, NULL); printf("hash_varchar:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); // hash_bernstein gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); hash_bernstein(szLine, 256, 0); // printf("%u\n", hash_varchar(szLine, 256)); } gettimeofday(&after, NULL); printf("hash_bernstein:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); // hash_bernstein DJBX33A gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); hash_bernstein(szLine, 256, 1); // printf("%u\n", hash_varchar(szLine, 256)); } gettimeofday(&after, NULL); printf("hash_bernstein DJBX33A:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); // hash_FNV-1a gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); hash_fnv1(szLine, 256, 0); // printf("%u\n", hash_varchar(szLine, 256)); } gettimeofday(&after, NULL); printf("hash_fnv1:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); // hash_FNV-1 gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); hash_fnv1(szLine, 256, 1); // printf("%u\n", hash_varchar(szLine, 256)); } gettimeofday(&after, NULL); printf("hash_fnv1 A:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); // hash_jenkins gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); hash_jenkins(szLine, 256); // printf("%u\n", hash_varchar(szLine, 256)); } gettimeofday(&after, NULL); printf("hash_jenkins:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); // hash_jenkins32 gettimeofday(&before, NULL); for (i = 0; i < 100000; i++) { memset(szLine, 0, 256); read(f, szLine, 255); /*n =*/ hash_jenkins32((u_int*) szLine, 256 / 4, 0); // printf("%u\n", n); } gettimeofday(&after, NULL); printf("hash_jenkins32:: elapsed time %f seconds\n", (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6); close(f); printf("\n"); printf("Test avalanche 0 .. 7::\n"); printf(" hash_varchar:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_varchar(szLine, 1, 1)); } printf("\n"); printf(" hash_fnv1:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_fnv1(szLine, 1, 0)); } printf("\n"); printf(" hash_fnv1 A:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_fnv1(szLine, 1, 1)); } printf("\n"); printf(" hash_fnv1 A (define):"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_fnv(szLine, 1)); } printf("\n"); printf(" hash_bernstein:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_bernstein(szLine, 1, 0)); } printf("\n"); printf(" hash_bernstein DJBX33A:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_bernstein(szLine, 1, 1)); } printf("\n"); printf(" hash_jenkins:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_jenkins(szLine, 1)); } printf("\n"); printf(" hash_jenkins32:"); for (i = 0; i < 8; i++) { n = szAvalanche[i][0]; printf(" %d=>%u/", i, hash_jenkins32(&n, 1, 0)); memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf("%d=>%u ", i, hash_jenkins32((u_int*) szLine, 1, 0)); } printf("\n"); printf(" hash_reddragon:"); for (i = 0; i < 8; i++) { memset(szLine, 0, 256); memcpy(szLine, &szAvalanche[i][0], 1); printf(" %d=>%u", i, hash_reddragon(szLine, 1)); } printf("\n"); printf(" aaa>%u\n", hash_reddragon("aaa", 3)); printf(" aab>%u\n", hash_reddragon("aab", 3)); return 0; }