Facebook open sources C++ F14 table de hachage

0
209

Le hachage est utilisé par les développeurs de rapidement identifier un particulier, unique objet à partir d’un groupe d’objets similaires. Par exemple, votre licence de pilote numéro un de hachage, qui peut être utilisée pour retirer votre dossier du conducteur lorsque vous êtes arrêté pour aller un tout petit peu au-dessus de la limite de vitesse. Dans l’informatique, où il y a dire des dizaines de milliers de John Smiths sur Facebook, tout ce que vous pouvez faire pour aider à trouver plus rapidement le John Smith, qui est votre copain est une bonne chose. Maintenant, Facebook a open-source F14, 14 chemin de sondage de la table de hachage dans la Folie, son open-source C++ de la bibliothèque.

Des gens qui ont travaillé sur la mise au point de hachage depuis le calcul des premiers jours. Le résultat a été une quasi infinité de nombre de méthodes de hachage et des tables. Facebook a été confronté à ce problème ainsi. Dans ses bureaux, Facebook, les développeurs ont créé de nombreux de la table de hachage implémentations chacun avec ses propres forces et faiblesses. Avec F14, Facebook développeurs Nathan Bronson et Xiao Shi revendication, “La F14 les tables de hachage de surpasser notre précédent des implémentations spécialisées tout en évitant leurs pathologies. F14 est une bonne valeur par défaut (généralement un excellent choix et jamais un mauvais, quel que soit le cas d’utilisation.”

Ce n’est pas facile. Parmi les questions les développeurs utilisant des tables de hachage faire face sont:

Avez-vous garder à long terme des références ou des pointeurs vers les entrées?Ne vous souciez plus de la CPU ou de la mémoire?De quelle taille sont vos clés?De quelle taille sont vos tables?Qu’est-ce que l’opération de mélange entre les insertions, de recherche et d’itération?Sont les chaînes de caractères des touches?Combien de fois avez-vous effacer?

Facebook affirme néanmoins:

Clairement, il est difficile de faire le meilleur choix quand il y a tellement de facteurs à considérer. Avec F14, nous avons condensé de cette liste à un choix simple: Si vous n’avez pas garder à long terme des références à des entrées de commencer avec la folie::F14FastMap/Set. Sinon, démarrez avec la folie::F14NodeMap/Set.

Le F14 résout les collisions (plusieurs clés de la carte pour le même index de tableau) par double hachage. Jusqu’à 14 clés sont stockées dans un bloc d’une seule table de hachage position. Haute-vecteur vitesse des jeux d’instructions x86_64 — SSE2 et aarch64 NÉON, sont utilisés pour filtrer à l’intérieur d’un morceau. En filtrant sur un maximum de 14 touches à la fois, la table de hachage peuvent être exploités à un maximum élevé de facteur de charge, tout en gardant de la sonde de chaînes très court.

Ce nouveau code réduit également la mémoire des déchets en permettant à plus d’un programme de données pour les adapter dans le cache. Il fait ceci pour plusieurs cas d’utilisation, car il prend en charge de multiples mises en mémoire pour les différents scénarios. Cela accélère à la fois la table de hachage et de ses environs, code.

Ce n’est pas juste une théorie. Facebook utilise F14 jamais le jour parce qu’il fonctionne bien. F14 fait un bon malaxage de choix, car il offre de l’UC et de la mémoire vive de l’efficacité qui est robuste dans de nombreux cas d’utilisation.

Peut F14 apporter votre hachage charge des programmes de traitement plus rapide, avec beaucoup moins de collisions? Il n’y a qu’un seul moyen de savoir est d’essayer pour vous-même. Le code est là. Bonne chance.

Articles Connexes:

Facebook ouvrir les sources de la tour de Babel, en Klingon pas supportedFacebook open-source IA cadre PyTorch 1.0 releasedFacebook sources ouvertes Katran outil de réseautage

En vedette

Microsoft bloque Windows 10 Mai 2019 mise à Jour sur les Ordinateurs qui utilisent une clé USB ou des cartes SD

La réalité virtuelle comme un traitement pour le TDAH?

L’avenir de la cybersécurité: Votre corps comme un piratage de réseau

Galaxy Fois: Quel est le problème?

Rubriques Connexes:

Open Source

Cloud

Big Data Analytics

L’Innovation

Tech et de Travail

La Collaboration