Facebook open source C++ – F14 hash-tabel

0
131

Hashing er brugt af udviklere til hurtigt at identificere et specifikt, unikt objekt fra en gruppe af ensartede objekter. For eksempel, dit kørekort nummer er en hash, som kan bruges til at trække din førerens registrering, når du er trukket for at gå en lille smule over fartgrænsen. I computing, hvor der er altså titusindvis af John Smiths på Facebook, noget, du kan gøre for at hjælpe med at fremskynde finde John Smith, der er din buddy er en god ting. Nu, Facebook har open source F14, en 14-vejs tast-hash-tabel i Dårskab, open source C++ – bibliotek.

Mennesker har arbejdet på at perfektionere hashing da computing ‘ s tidlige dage. Resultatet har været en næsten endeløs række af hashing metoder og tabeller. Facebook har stået over for dette problem så godt. Inden sin kontorer, Facebook-udviklere har skabt mange hash-tabel implementeringer, hver med sine egne styrker og svagheder. Med F14, Facebook-udviklere Nathan Bronson og Xiao Shi hævder, at “Den F14 hash-tabeller overgå vores tidligere specialiseret implementeringer, og samtidig undgå deres sygdomme. F14 er en god standard-normalt et godt valg, og aldrig en dårlig én, uanset use case.”

Det er ikke nemt. Blandt de emner, udviklere, der bruger hash-tabeller står over for, er:

Skal du holde en lang levetid referencer eller henvisninger til de poster?Bekymrer du dig mere om CPU eller hukommelse?Hvor store er dine nøgler?Hvor store er dine tabeller?Hvad er drift mix mellem indrykninger, søgninger, og iteration?Er de nøgler, strenge?Hvor ofte har du at slette?

Facebook ikke desto mindre hedder det:

Det er klart, det er svært at gøre det bedste valg, når der er så mange faktorer at overveje. Med F14, vi har condensed denne liste til en simpel valg: Hvis du ikke holder lang levetid henvisninger til poster, der begynder med dårskab::F14FastMap/Sæt. Ellers begynder med dårskab::F14NodeMap/Sæt.

Den F14 løser kollisioner (flere nøgler, som er til det samme array-indeks) ved dobbelt hashing. Op til 14 nøgler er lagret i et stykke i en enkelt hash tabel position. High-speed vektor instruktion sæt — x86_64 SSE2 og aarch64 NEON — bruges til at filtrere inden for en luns. Ved filtrering på op til 14 taster på en gang, hash tabel kan drives med en høj maksimal belastning faktor, mens du stadig holder probe kæder meget kort.

Denne nye kode også reducerer hukommelse affald ved at tillade mere af et programs data til at passe ind i cache. Det gør dette for flere use cases, fordi det understøtter flere hukommelse layouts til forskellige scenarier. Dette fremskynder både hash-tabel og dens omkringliggende kode.

Dette er ikke blot en teori. Facebook bruger F14 nogensinde dag, fordi det fungerer godt. F14 gør en god hashing valg, fordi det leverer CPU og RAM effektivitet, der er robust på tværs af mange use cases.

Kan F14 bringe dine hash-afhængige programmer hurtigere behandling med langt færre sammenstød? Der er kun én måde at finde ud af, og det er at prøve det selv. Den kode, der er derude. Held og lykke.

Relaterede Historier:

Facebook åbne kilder tower of Babel, Klingon ikke supportedFacebook open-source AI ramme PyTorch 1.0 releasedFacebook åbne kilder Katran networking værktøj

Fremhævede

Microsoft blokerer Windows 10 Maj 2019 Opdatering på Pc ‘ er, der bruger USB-lager eller SD-kort

Virtual reality som en behandling for ADHD?

Fremtiden for cybersecurity: Din krop som en hacker-proof netværk

Galaxy Fold: Hvad gik galt?

Relaterede Emner:

Open Source

Cloud

Big Data Analytics

Innovation

Tech og Arbejde

Samarbejde