Facebook open bronnen C++ F14 hash-tabel

0
108

Hashing wordt gebruikt door ontwikkelaars om snel identificeren van een specifieke, unieke object uit een groep van soortgelijke objecten. Bijvoorbeeld, uw rijbewijs nummer is een hash, welke gebruikt kan worden om uw stuurprogramma ‘ s opnemen als je getrokken over te gaan een beetje over de maximum snelheid. In computing, waar er zeggen tienduizenden John Smiths op Facebook, alles wat je kunt doen om te helpen de snelheid van het vinden van de John Smith ‘ s wie je buddy is een goede zaak. Nu Facebook heeft een open-source F14, een 14-indringende manier hash-tabel in de Dwaasheid, de open-source C++ – bibliotheek.

Mensen werken aan het perfectioneren van hashing sinds computing vroege dagen. Het resultaat is een bijna eindeloos aantal hashing methoden en tabellen. Facebook heeft te kampen met dit probleem. Binnen de kantoren, Facebook ontwikkelaars hebben tal van hash-tabel implementaties elk met zijn eigen sterke en zwakke punten. Met F14, Facebook ontwikkelaars Nathan Bronson en Xiao Shi vordering, “Het F14 hash-tabellen overtreffen onze vorige gespecialiseerd implementaties terwijl het vermijden van hun aandoeningen. F14 is een goede standaard — meestal een grote keuze en nooit een slechte, ongeacht het gebruik.”

Dat is niet gemakkelijk. Onder de zaken die ontwikkelaars met hash-tabellen gezicht zijn:

Houd je van lange duur referenties of verwijzingen naar de inzendingen?Wilt u de zorg meer over het gebruik van CPU of geheugen?Hoe groot zijn de sleutels?Hoe groot zijn de tabellen?Wat is de werking mix tussen invoegingen, zoekopdrachten, en iteratie?Zijn de toetsen snaren?Hoe vaak heb je wissen?

Facebook toch staten:

Duidelijk, het is moeilijk om de juiste keuze te maken als er zo veel factoren te overwegen. Met F14, hebben we een verkorte deze lijst op een simpele keuze: Als je niet houdt van lange duur verwijzingen naar items beginnen met dwaasheid::F14FastMap/Set. Anders start met dwaasheid::F14NodeMap/Set.

De F14 is opgelost botsingen (met meerdere toetsen die zijn toegewezen aan dezelfde array-index) door double hashing. 14 toetsen worden opgeslagen in een stuk op een enkele hash positie aan de tafel. High-speed vector instructie sets — x86_64 SSE2 en aarch64 NEON — worden gebruikt om te filteren binnen een segment. Door te filteren op 14 toetsen tegelijk van de hash-tabel kan gebruikt worden bij een hoge maximum load factor, terwijl het houden van sonde ketens zeer kort.

Deze nieuwe code vermindert ook het geheugen afval doordat meer van een programma de gegevens aan te passen in de cache. Het doet dit voor meerdere use cases, omdat het ondersteunt meerdere geheugen lay-outs voor verschillende scenario ‘ s. Dit versnelt zowel de hash-tabel en de omliggende code.

Dit is niet slechts een theorie. Facebook maakt gebruik van F14 ooit die dag, want het werkt goed. F14 maakt een goede hash-keuze, want het levert de CPU en het RAM-efficiëntie die robuust is in heel veel gevallen.

Kan F14 breng je hash-afhankelijke programma ‘ s sneller te verwerken met veel minder botsingen? Er is maar één manier om erachter te komen en dat is om het te proberen voor jezelf. De code is er uit. Goed geluk.

Verwante Artikelen:

Facebook open bronnen toren van Babel, het Klingon niet supportedFacebook open-source AI kader PyTorch 1.0 releasedFacebook open bronnen Katran networking tool

Aanbevolen

Blokkeert Microsoft Windows 10 Mei 2019 Update op Pc ‘ s die gebruik maken van USB-opslag of SD-kaarten

Virtual reality als een behandeling voor ADHD?

De toekomst van cybersecurity: Je lichaam als een hacker-proof netwerk

Galaxy Vouwen: Wat ging er mis?

Verwante Onderwerpen:

Open Source

Cloud

Big Data Analytics

Innovatie

Tech en Werk

Samenwerking