Facebook obre la implementació de les taules hash F14

empresa de Facebook va anunciar sobre la implementació de codi obert de taules hash F14, optimitzat per a un consum eficient de memòria. F14 s'utilitza a la infraestructura de Facebook com a reemplaçament de la majoria de tipus de taules hash i pot reduir el consum de memòria sense sacrificar el rendiment. F14 supera notablement les taules hash de google::sparse_hash_map, que fins ara s'han considerat les més eficients pel que fa al consum de memòria. El codi del projecte està escrit en C++ i s'inclou a la biblioteca La bogeria.

F14 es refereix a algorismes amb un sistema de resolució de col·lisions basat en doble hashing amb 14 seqüències de mostres (una cadena de 14 ranures s'emmagatzema en una cel·la de la taula hash i l'interval entre cel·les es calcula mitjançant una funció hash auxiliar). Per accelerar les operacions de filtratge de cel·les, la implementació utilitza instruccions vectorials SSE2 per als sistemes x86_64 i NEON per a Aarch64, que permeten paral·lelitzar l'execució d'operacions per seleccionar ranures amb clauers i tamisar claus dins de la cadena. Es processen blocs de 14 ranures alhora, que és l'equilibri òptim entre l'eficiència d'utilitzar la memòria cau del processador i el nombre de col·lisions.

Una característica especial de F14 és la capacitat de seleccionar diferents estratègies d'emmagatzematge de dades:

  • F14NodeMap: consumeix menys memòria per a claus grans i mitjanes. Assegura que els elements s'emmagatzemen indirectament amb una crida a malloc a cada inserció;
  • F14ValueMap: proporciona un consum mínim de memòria per a tecles petites. Els elements s'emmagatzemen a les mateixes cel·les (en línia). Per a tecles mitjanes i grans, aquest enfocament comporta una sobrecàrrega de memòria notable;
  • F14VectorMap: funciona més ràpid per a taules grans i tecles complexes, però més lent per a tecles simples i taules petites. Els elements s'empaqueten en una matriu contínuament poblada i s'adreça amb un punter d'índex de 32 bits;
  • F14FastMap és una estratègia combinada. Si la clau té menys de 24 bytes, es selecciona F14ValueMap i, si és més, se selecciona F14VectorMap.

Facebook obre la implementació de les taules hash F14

Font: opennet.ru

Afegeix comentari