#include
#include
#include "bucketplacement/PhobicContender.h"
#include "bucketplacement/PartitionedPTHashContender.h"
#include "fingerprinting/RustFmphContender.h"
#include "bucketplacement/PTHashContender.h"
#include "recsplit/SIMDRecSplitContender.h"
#include "retrievalbased/SicHashContender.h"
#include "shockhash/BipartiteShockHashContender.h"
#ifdef HAS_VULKAN
#include "bucketplacement/GpuPhobicContender.h"
#endif
/**
* Comparison table used in "PHOBIC: Perfect Hashing with Optimized Bucket Sizes and Interleaved Coding".
* https://arxiv.org/pdf/2404.18497
*/
int main(int argc, char** argv) {
size_t N = 5e6;
tlx::CmdlineParser cmd;
cmd.add_bytes('n', "numKeys", N, "Number of objects");
cmd.add_bytes('q', "numQueries", Contender::numQueries, "Number of queries to perform");
cmd.add_bytes('t', "numThreads", Contender::numThreads, "Number of threads to use for construction");
cmd.add_flag('T', "skipTests", Contender::skipTests, "Skip testing PHF for validity");
if (!cmd.process(argc, argv)) {
return 1;
}
/*
// CPU vs GPU
for (size_t n = 5120; n