Annotation of libaitcrc/example/test_hash.c, revision 1.1.2.1
1.1.2.1 ! misho 1: #include <stdio.h>
! 2: #include <string.h>
! 3: #include <fcntl.h>
! 4: #include <unistd.h>
! 5: #include "aithash.h"
! 6:
! 7:
! 8: int main()
! 9: {
! 10: int i, f;
! 11: char szLine[256], szAvalanche[][2] = { { 0, 0 }, { 1, 0 }, { 2, 0 }, { 3, 0 },
! 12: { 4, 0 }, { 5, 0 }, { 6, 0 }, { 7, 0 } };
! 13: struct timeval before, after;
! 14:
! 15: /*
! 16: f = open("/dev/urandom", O_RDONLY);
! 17: if (f == -1)
! 18: return 1;
! 19: // hash_varchar
! 20: gettimeofday(&before, NULL);
! 21: for (i = 0; i < 1000000; i++) {
! 22: memset(szLine, 0, 256);
! 23: read(f, szLine, 255);
! 24: hash_varchar(szLine, 256);
! 25: // printf("%u\n", hash_varchar(szLine, 256));
! 26: }
! 27: gettimeofday(&after, NULL);
! 28: printf("hash_varchar:: elapsed time %f seconds\n",
! 29: (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6);
! 30: // hash_bernstein
! 31: gettimeofday(&before, NULL);
! 32: for (i = 0; i < 1000000; i++) {
! 33: memset(szLine, 0, 256);
! 34: read(f, szLine, 255);
! 35: hash_bernstein(szLine, 256, 0);
! 36: // printf("%u\n", hash_varchar(szLine, 256));
! 37: }
! 38: gettimeofday(&after, NULL);
! 39: printf("hash_bernstein:: elapsed time %f seconds\n",
! 40: (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6);
! 41: // hash_bernstein DJBX33A
! 42: gettimeofday(&before, NULL);
! 43: for (i = 0; i < 1000000; i++) {
! 44: memset(szLine, 0, 256);
! 45: read(f, szLine, 255);
! 46: hash_bernstein(szLine, 256, 1);
! 47: // printf("%u\n", hash_varchar(szLine, 256));
! 48: }
! 49: gettimeofday(&after, NULL);
! 50: printf("hash_bernstein DJBX33A:: elapsed time %f seconds\n",
! 51: (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6);
! 52: // hash_FNV-1a
! 53: gettimeofday(&before, NULL);
! 54: for (i = 0; i < 1000000; i++) {
! 55: memset(szLine, 0, 256);
! 56: read(f, szLine, 255);
! 57: hash_fnv1(szLine, 256, 0);
! 58: // printf("%u\n", hash_varchar(szLine, 256));
! 59: }
! 60: gettimeofday(&after, NULL);
! 61: printf("hash_fnv1:: elapsed time %f seconds\n",
! 62: (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6);
! 63: // hash_FNV-1
! 64: gettimeofday(&before, NULL);
! 65: for (i = 0; i < 1000000; i++) {
! 66: memset(szLine, 0, 256);
! 67: read(f, szLine, 255);
! 68: hash_fnv1(szLine, 256, 1);
! 69: // printf("%u\n", hash_varchar(szLine, 256));
! 70: }
! 71: gettimeofday(&after, NULL);
! 72: printf("hash_fnv1 A:: elapsed time %f seconds\n",
! 73: (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6);
! 74: // hash_jenkins
! 75: gettimeofday(&before, NULL);
! 76: for (i = 0; i < 1000000; i++) {
! 77: memset(szLine, 0, 256);
! 78: read(f, szLine, 255);
! 79: hash_jenkins(szLine, 256);
! 80: // printf("%u\n", hash_varchar(szLine, 256));
! 81: }
! 82: gettimeofday(&after, NULL);
! 83: printf("hash_jenkins:: elapsed time %f seconds\n",
! 84: (after.tv_sec - before.tv_sec) + (after.tv_usec - before.tv_usec) / 1.e6);
! 85:
! 86: close(f);
! 87: printf("\n");
! 88: */
! 89: printf("Test avalanche 0 .. 7::\n");
! 90:
! 91: printf(" hash_varchar:");
! 92: for (i = 0; i < 8; i++) {
! 93: memset(szLine, 0, 256);
! 94: memcpy(szLine, &szAvalanche[i][0], 1);
! 95: printf(" %d=>%u", i, hash_varchar(szLine, 1));
! 96: }
! 97: printf("\n");
! 98: printf(" hash_fnv1:");
! 99: for (i = 0; i < 8; i++) {
! 100: memset(szLine, 0, 256);
! 101: memcpy(szLine, &szAvalanche[i][0], 1);
! 102: printf(" %d=>%u", i, hash_fnv1(szLine, 1, 0));
! 103: }
! 104: printf("\n");
! 105: printf(" hash_fnv1 A:");
! 106: for (i = 0; i < 8; i++) {
! 107: memset(szLine, 0, 256);
! 108: memcpy(szLine, &szAvalanche[i][0], 1);
! 109: printf(" %d=>%u", i, hash_fnv1(szLine, 1, 1));
! 110: }
! 111: printf("\n");
! 112: printf(" hash_fnv1 A (define):");
! 113: for (i = 0; i < 8; i++) {
! 114: memset(szLine, 0, 256);
! 115: memcpy(szLine, &szAvalanche[i][0], 1);
! 116: printf(" %d=>%u", i, hash_fnv(szLine, 1));
! 117: }
! 118: printf("\n");
! 119: printf(" hash_bernstein:");
! 120: for (i = 0; i < 8; i++) {
! 121: memset(szLine, 0, 256);
! 122: memcpy(szLine, &szAvalanche[i][0], 1);
! 123: printf(" %d=>%u", i, hash_bernstein(szLine, 1, 0));
! 124: }
! 125: printf("\n");
! 126: printf(" hash_bernstein DJBX33A:");
! 127: for (i = 0; i < 8; i++) {
! 128: memset(szLine, 0, 256);
! 129: memcpy(szLine, &szAvalanche[i][0], 1);
! 130: printf(" %d=>%u", i, hash_bernstein(szLine, 1, 1));
! 131: }
! 132: printf("\n");
! 133: printf(" hash_jenkins:");
! 134: for (i = 0; i < 8; i++) {
! 135: memset(szLine, 0, 256);
! 136: memcpy(szLine, &szAvalanche[i][0], 1);
! 137: printf(" %d=>%u", i, hash_jenkins(szLine, 1));
! 138: }
! 139: printf("\n");
! 140: return 0;
! 141: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>