Files
epics-base/src/libCom/test/buckTest.c
2009-08-24 17:07:03 +00:00

87 lines
2.9 KiB
C

/*************************************************************************\
* Copyright (c) 2006 UChicago Argonne LLC, as Operator of Argonne
* National Laboratory.
* Copyright (c) 2002 The Regents of the University of California, as
* Operator of Los Alamos National Laboratory.
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
#include <time.h>
#include <stdio.h>
#include "epicsAssert.h"
#include "bucketLib.h"
#include "testMain.h"
#define verify(exp) ((exp) ? (void)0 : \
epicsAssert(__FILE__, __LINE__, #exp, epicsAssertAuthor))
MAIN(buckTest)
{
unsigned id1;
unsigned id2;
char *pValSave1;
char *pValSave2;
int s;
BUCKET *pb;
char *pVal;
unsigned i;
clock_t start, finish;
double duration;
const int LOOPS = 500000;
pb = bucketCreate(8);
if(!pb){
return -1;
}
id1 = 0x1000a432;
pValSave1 = "fred";
s = bucketAddItemUnsignedId(pb, &id1, pValSave1);
verify (s == S_bucket_success);
pValSave2 = "jane";
id2 = 0x0000a432;
s = bucketAddItemUnsignedId(pb, &id2, pValSave2);
verify (s == S_bucket_success);
start = clock();
for(i=0; i<LOOPS; i++){
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id1);
verify (pVal == pValSave1);
pVal = bucketLookupItemUnsignedId(pb, &id2);
verify (pVal == pValSave2);
}
finish = clock();
duration = finish-start;
duration = duration/CLOCKS_PER_SEC;
printf("It took %15.10f total sec\n", duration);
duration = duration/LOOPS;
duration = duration/10;
duration = duration * 1e6;
printf("It took %15.10f u sec per hash lookup\n", duration);
bucketShow(pb);
return S_bucket_success;
}