Skip to content

Why lookupKey function doesn't work as expected? #6

@lyupy

Description

@lyupy

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions