Commit 175b42b4 by Alan Mishchenko

Experiments with hashing.

parent fe3d3341
......@@ -131,11 +131,15 @@ void Abc_NamStop( Abc_Nam_t * p )
SeeAlso []
***********************************************************************/
void Abc_NamPrint( Abc_Nam_t * p )
void Abc_NamPrint( Abc_Nam_t * p, char * pFileName )
{
FILE * pFile = pFileName ? fopen( pFileName, "wb" ) : stdout;
int h, i;
if ( pFile == NULL ) { printf( "Count node open file %s\n", pFileName ); return; }
Vec_IntForEachEntryStart( &p->vInt2Handle, h, i, 1 )
Abc_Print( 1, "%d=\n%s\n", i, Abc_NamHandleToStr(p, h) );
fprintf( pFile, "%8d = %s\n", i, Abc_NamHandleToStr(p, h) );
if ( pFile != stdout )
fclose(pFile);
}
/**Function*************************************************************
......@@ -275,6 +279,22 @@ int Abc_NamStrHash( const char * pStr, const char * pLim, int nTableSize )
}
return uHash % nTableSize;
}
// https://en.wikipedia.org/wiki/Jenkins_hash_function
int Abc_NamStrHash2( const char * pStr, const char * pLim, int nTableSize )
{
int nSize = pLim ? pLim - pStr : -1;
int i = 0; unsigned hash = 0;
while ( i != nSize && pStr[i] )
{
hash += pStr[i++];
hash += hash << 10;
hash ^= hash >> 6;
}
hash += hash << 3;
hash ^= hash >> 11;
hash += hash << 15;
return (int)(hash % nTableSize);
}
/**Function*************************************************************
......
......@@ -52,7 +52,7 @@ typedef struct Abc_Nam_t_ Abc_Nam_t;
/*=== utilNam.c ===============================================================*/
extern Abc_Nam_t * Abc_NamStart( int nObjs, int nAveSize );
extern void Abc_NamStop( Abc_Nam_t * p );
extern void Abc_NamPrint( Abc_Nam_t * p );
extern void Abc_NamPrint( Abc_Nam_t * p, char * pFileName );
extern Abc_Nam_t * Abc_NamRef( Abc_Nam_t * p );
extern void Abc_NamDeref( Abc_Nam_t * p );
extern int Abc_NamObjNumMax( Abc_Nam_t * p );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment