Třídění bych nedělal, tím výkon asi dost zabiješ.
Pokud znáš data "dopředu", tozn. čísla chodí v nějakém streamu a nevadí ti mírné zvýšení latencí a cílíš hlavně na vysokou propustnost, můžech použít
prefetch dat z RAM do cache, před vlastním porovnáním se bude N budoucích čísel ze slovníku prefetchovat do cache. Tím zajistíš, že v okamžiku, kdy se čísla budou skutečně porovnávat, už budou data ze slovníku v cache a nečeká se na RAM.
Další možnost je použít
AVX instrukce, tím se zrychlí vlastní porovnávání, ale je nutné mít data v cache, jinak se stejně čeká na RAM.
Docela dobrý trik jsou také pravděpodobnostní datové struktury, pro tento účel je asi nejlepší
cuckoo filter. Hashovat nic nemusíš, "hash" se dá vytvořit třeba XORem z čísla. Z filtru vypadne výsledek buď číslo určtitě není ve slovníku, nebo číslo je možná ve slovníku (pak musíš udělat porovnání se slovníkem). Výhoda cuckoo filtru je, že jsou jeho data mnohem menší a vejdou do L2/L3 cache.