/* test_hash.c */
#include "../I2Ohash.h"
#include "../../Drand.h"
/*--------------------------------------------------------------------*/
int
main ( int argc, char *argv[] )
/*
-------------------------------------------
generate random (key1, key2, value) entries
and place them into a hash table.
created -- 98jan28, cca
-------------------------------------------
*/
{
Drand *drand ;
FILE *msgFile ;
I2Ohash *hashtbl ;
int grow, ii, key1, key2, maxkey, msglvl, nent, seed, size ;
if ( argc != 8 ) {
fprintf(stdout,
"\n\n %% usage : %s msglvl msgFile size grow maxkey nent seed"
"\n %% msglvl -- message level"
"\n %% msgFile -- message file"
"\n %% size -- number of lists in the hash table"
"\n %% grow -- growth for list items"
"\n %% maxkey -- maximum key value"
"\n %% nent -- number of entries to insert"
"\n %% seed -- random number seed"
"\n", argv[0]) ;
return(0) ;
}
msglvl = atoi(argv[1]) ;
if ( strcmp(argv[2], "stdout") == 0 ) {
msgFile = stdout ;
} else if ( (msgFile = fopen(argv[2], "a")) == NULL ) {
fprintf(stderr, "\n fatal error in %s"
"\n unable to open file %s\n",
argv[0], argv[2]) ;
return(-1) ;
}
size = atoi(argv[3]) ;
grow = atoi(argv[4]) ;
maxkey = atoi(argv[5]) ;
nent = atoi(argv[6]) ;
seed = atoi(argv[7]) ;
/*
fprintf(msgFile,
"\n %% %s "
"\n %% msglvl -- %d"
"\n %% msgFile -- %s"
"\n %% size -- %d"
"\n %% grow -- %d"
"\n %% maxkey -- %d"
"\n %% nent -- %d"
"\n",
argv[0], msglvl, argv[2], size, grow, maxkey, nent) ;
fflush(msgFile) ;
*/
/*
--------------------------------
initialize the hash table object
--------------------------------
*/
hashtbl = I2Ohash_new() ;
I2Ohash_init(hashtbl, size, nent/2, grow) ;
drand = Drand_new() ;
Drand_setSeed(drand, seed) ;
Drand_setUniform(drand, 0, maxkey) ;
/*
------------------------------------------------------------
generate (key1, key2, value) pairs and insert into the table
------------------------------------------------------------
*/
for ( ii = 0 ; ii < nent ; ii++ ) {
key1 = Drand_value(drand) ;
key2 = Drand_value(drand) ;
if ( msglvl > 2 ) {
fprintf(msgFile, "\n inserting <%d,%d,NULL> into hash table",
key1, key2) ;
}
I2Ohash_insert(hashtbl, key1, key2, NULL) ;
if ( msglvl > 1 ) {
fprintf(msgFile, "\n %d entries, measure = %.3f",
ii+1, I2Ohash_measure(hashtbl)) ;
}
if ( msglvl > 3 ) {
I2Ohash_writeForHumanEye(hashtbl, msgFile) ;
}
}
if ( msglvl > 0 ) {
fprintf(msgFile, "\n %12d %12d %12.3f",
size, nent, I2Ohash_measure(hashtbl)) ;
}
fprintf(msgFile, "\n") ;
fclose(msgFile) ;
return(1) ; }
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1