Files
epics-base/modules/libcom/test/buckTest.c
Andrew Johnson 3c99391d93 Added SPDX License ID to all EPICS-original source files
In some cases the license-identification header was missing,
so I added that as well. Replaced the remaining headers that
specifically identified "Versions 3.13.7 and higher".

Makefiles and the build system were deliberately excluded.
2020-08-03 11:53:01 -05:00

84 lines
2.5 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.
* SPDX-License-Identifier: EPICS
* EPICS BASE is distributed subject to a Software License Agreement found
* in file LICENSE that is included with this distribution.
\*************************************************************************/
#include <stdio.h>
#include "epicsTime.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;
epicsTimeStamp 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);
epicsTimeGetCurrent(&start);
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);
}
epicsTimeGetCurrent(&finish);
duration = epicsTimeDiffInSeconds(&finish, &start);
printf("%d loops took %.10f seconds\n", LOOPS, duration);
duration /= 10 * LOOPS;
printf("which is %.3f nanoseconds per hash lookup\n", duration * 1e9);
bucketShow(pb);
return S_bucket_success;
}