--- libaitcrc/example/test_hash.c 2010/06/13 16:32:09 1.1 +++ libaitcrc/example/test_hash.c 2011/04/28 20:28:20 1.2 @@ -0,0 +1,150 @@ +#include +#include +#include +#include +#include "aitcrc.h" + + +int main() +{ + int i, f; + 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 < 1000000; i++) { + memset(szLine, 0, 256); + read(f, szLine, 255); + hash_varchar(szLine, 256); +// 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 < 1000000; 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 < 1000000; 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 < 1000000; 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 < 1000000; 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 < 1000000; 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); + + 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_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; +}