#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#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;
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>