Why lookupKey function doesn't work as expected?
lyupy opened this issue · 0 comments
lyupy commented
I use 10000 key to build SuRF, and then lookup those key , but SuRF miss some key?
// test code
std::vector<std::string> keys;
for (int i = 0; i < 10000; i++) {
keys.push_back(std::to_string(i));
}
// basic surf
SuRF* surf = new SuRF(keys);
// use default dense-to-sparse ratio; specify suffix type and length
SuRF* surf_hash = new SuRF(keys, surf::kHash, 8, 0);
SuRF* surf_real = new SuRF(keys, surf::kReal, 0, 8);
// customize dense-to-sparse ratio; specify suffix type and length
SuRF* surf_mixed = new SuRF(keys, true, 16, surf::kMixed, 4, 4);
int n_error = 0;
int n_correct = 0;
for (int i = 0; i < 10000; i++) {
if (surf->lookupKey(std::to_string(i)))
n_correct++;
else
n_error++;
}
std::cout << "num:"<< n_error << ":" << n_correct << std::endl;
num:9:9991