Bu makale, gruplandırılmış SIMD (Single Instruction, Multiple Data) meta veri taraması kullanarak yüksek performans sunan yeni bir C++ hash tablosunu tanıtıyor. GroupedSIMD adlı bu yapı, özellikle büyük veri kümeleriyle çalışırken ve yoğun arama (lookup) işlemlerinde mevcut en iyi çözümlerden biri olarak kabul edilen ankerl::unordered_dense gibi Robin Hood hash tablolarını geride bırakıyor. Geleneksel hash tablolarının dağınık bellek erişimi sorununu, bitişik bellek bloklarını SIMD komut setleriyle tarayarak çözüyor ve bu sayede önemli bir hız artışı sağlıyor.
Performans testleri, 500.000'den fazla eleman içeren tablolarda GroupedSIMD'nin üstünlüğünü ortaya koyuyor. Örneğin, 1 milyon elemanlık bir tabloda arama (lookup hit) işlemleri ankerl::unordered_dense'e göre %69 daha hızlı gerçekleşirken, arama başarısızlığı (lookup miss) %21 daha hızlıdır. Ancak, veri ekleme (insert) işlemleri GroupedSIMD'de %28 daha yavaş kalmaktadır. Bu durum, tablonun 500.000'den fazla eleman içerdiği ve yoğun arama yüklerinin olduğu senaryolarda tercih edilmesi gerektiğini gösteriyor. Ekleme maliyetinin, arama performansındaki kazançla dengelenebildiği durumlarda ideal bir çözümdür.
GroupedSIMD'nin temel yeniliği, geleneksel kuadratik yoklamanın aksine, 16 bitişik yuvalık grupları tek bir SIMD yükleme işlemiyle taramasıdır. Her yuvada, dolu olup olmadığını ve hash parçasını belirten 1 baytlık bir meta veri etiketi bulunur. Bu etiketler, anahtarlar karşılaştırılmadan önce eşleşmeyenlerin 127/128'ini hızlıca filtrelemeyi sağlar. Bu yaklaşım, Google'ın Swiss Tables'ında kullanılan yöntemle benzer bir mantığa sahiptir. C++17 ve SSE2 desteği gerektiren bu başlık dosyası tabanlı kütüphane, x86-64 işlemcilerde standart olarak bulunan SSE2 komut setlerini kullanarak geniş bir uyumluluk sunar.
Bu yeni hash tablosu, özellikle büyük veri setlerinde ve arama yoğunluklu uygulamalarda C++ geliştiricilerine önemli performans iyileştirmeleri sunarak veri yapısı optimizasyonunda yeni bir standart belirliyor.