Setting - minseok127/HashSimulator GitHub Wiki

Setting

Hash Function을 test하기 이전 설정해야할 내용들입니다.

Contents

Hash code size

Hash Function이 만들어낼 Hash code의 bit 수를 설정해야 합니다.

hashcodesize.h에서 HASH_CODE_SIZE 값을 조절합니다. 기본적으로 32로 정의되어있습니다.

#define HASH_CODE_SIZE (32)

Hash list

hashlist.h에서 Hash Function들의 ID를 설정합니다.

이 ID들은 이후 배열의 Index로도 사용됩니다.

Register

hashsimulator.cpp에서 Hash Function의 함수 포인터와 Indexing 방식에 대한 함수 포인터를 등록합니다.

주의할 점으로 Hash Function과 Indexing Function은

void HashFunc(const void* key, int len, uint32_t seed, void* out);
int  IndexingFunc(int bincount, void* out);

이와 같은 양식으로 등록해야 합니다.

Constructor

HashSimulator(HID* HIDList, int HIDCount, int binCount, uint32_t seed);

첫 번째 인자는 Hash Function ID의 배열 주소를 나타냅니다.

Test하고자 할 Hash Function들의 ID를 배열로 만들고, 해당 배열의 주소값을 전달해야 합니다.

두 번째 인자는 ID의 개수를 의미합니다.

세 번째 인자는 Hash Table이 몇 개의 bin을 가질 지를 의미합니다.

네 번째 인자는 Hash Function에서 사용할 seed를 의미합니다.

Add keys

Test를 시작하기 전 key들을 추가해야 합니다.

HashSimulator의 멤버함수인 AddKey를 사용합니다.

void AddKey(void* keyptr, int length);

key의 포인터와 해당 key가 몇 byte를 가졌는 지를 전달합니다.