efficient/SuRF

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