Facebook öppna källor C++ F14 hash-tabell

0
176

Hashning används av utvecklare för att snabbt identifiera ett specifikt, unikt objekt från en grupp av likartade objekt. Till exempel, din drivrutin licens nummer ett hash-värde, som kan användas för att dra ditt körkort spela in när du drog över för att gå en liten bit över hastighetsgränsen. I databehandling, där det finns säga tiotusentals John Smiths på Facebook, något du kan göra för att hjälpa till att snabba upp att hitta de John Smith som är din kompis är en bra sak. Nu, Facebook har öppen källkod-F14, en 14-sätt sondering hash-tabell i Dårskap, sin öppna källkod för C++.

Människor har arbetat på att finslipa hash eftersom design och tidiga dagar. Resultatet har blivit ett nästan oändligt antal hash metoder och tabeller. Facebook har haft detta problem. Inom sitt kontor, Facebook utvecklare har skapat många hash-tabell implementationer var och en med sina egna styrkor och svagheter. Med F14, Facebook utvecklare Nathan Bronson och Xiao Shi påståendet “Det F14 hash-tabeller överträffa våra tidigare specialiserade implementationer och samtidigt undvika deras sjukdomar. F14 en bra standard — oftast ett stort urval och aldrig en dålig en, oberoende av användningen fall.”

Det är inte lätt. Bland de frågor som utvecklare att använda hash-tabeller står inför är:

Vill du hålla länge levt referenser eller pekare till poster?Bryr du dig mer om CPU och minne?Hur stora är dina nycklar?Hur stora är dina tabeller?Vad är det för drift blandning mellan infogningar, sökningar, och iteration?Är nycklarna strängar?Hur ofta tycker du radera?

Facebook säger ändå:

Klart, det är svårt att göra det bästa valet när det finns så många faktorer att tänka på. Med F14, vi har kondenserad denna lista till ett enkelt val: Om du inte håller lång livslängd hänvisningar till poster, börja med dårskap::F14FastMap/Set. Annars, börja med dårskap::F14NodeMap/Set.

Den F14 löser kollisioner (flera nycklar som mappas till samma array index) med dubbel hashning. Upp till 14 nycklar lagras i en bit på en enda hash-tabell position. Hög hastighet vektor för instruktionen anger — x86_64 SSE2 och aarch64 NEON-används för att filtrera inom en bit. Genom att filtrera på upp till 14 nycklar på en gång, hash-tabell kan bedrivas på en hög högsta kabinfaktorn och samtidigt hålla sonden kedjor mycket kort.

Denna nya kod minskar också minnet av avfall genom att tillåta mer av ett program: s data för att passa in i cache-minnet. Det gör den i flera fall använda eftersom det har stöd för flera minne layouter för olika scenarier. Detta snabbar upp både hash-tabellen och dess omgivande kod.

Detta är inte bara en teori. Facebook använder F14 någonsin dag eftersom det fungerar bra. F14 gör en bra hash val eftersom det ger CPU och RAM effektivitet som är stabil över många användningsfall.

Kan F14 ta med din hash-beroende program snabbare behandling med färre kollisioner? Det finns bara ett sätt att ta reda på och det är att prova själv. Koden är ute. Lycka till.

Relaterade Artiklar:

Facebook öppna källor babels torn, Klingonska inte supportedFacebook open-source AI ramen PyTorch 1.0 releasedFacebook öppna källor Katran nätverk verktyg

Utvalda

Microsoft block Windows 10 Maj 2019 Uppdateringen på Datorer som använder en USB-lagringsenhet eller SD-kort

Virtuella verkligheten som en behandling för ADHD?

Framtiden för cybersäkerhet: Ditt kroppen som en hacker-bevis nätverk

Galaxy Vik: Vad gick fel?

Relaterade Ämnen:

Öppen Källkod

Cloud

Big Data Analytics

Innovation

Tech och Arbete

Samarbete