Une implémentation Trie rapide et économe en mémoire pour React Native. Utilise le HAT-trie de Tessel.
npm install react-native-fast-trie
yarn add react-native-fast-trie
Les benchmarks sont effectués par rapport à une implémentation JS couramment utilisée (typée en trie) sur des appareils réels construits en mode release. Vous pouvez créer l'exemple de projet sur votre appareil pour reproduire ces résultats.
Les tests sont les suivants :
Appareil | Liste de mots unique | Insertion par lots | Toutes les listes de mots | Contient | Trouver |
---|---|---|---|---|---|
Pixel 5 | 4,64x plus rapide | 16,86x plus rapide | 7,76x plus rapide | 2,94x plus rapide | 24,63x plus rapide |
Pixel 3a | 3,26x plus rapide | 14,67x plus rapide | 5,54x plus rapide | 3,06x plus rapide | 26,23x plus rapide |
Galaxie A10e | 2,94x plus rapide | 9,83x plus rapide | 4,84x plus rapide | 3,95x plus rapide | 11,47x plus rapide |
iPhone 15 Pro Max | 3,78x plus rapide | 10,33x plus rapide | 5,13x plus rapide | 3,43x plus rapide | 23,83x plus rapide |
iPhone 11 Pro Max | 4,65x plus rapide | 13,12x plus rapide | 5,21x plus rapide | 3,35x plus rapide | 23,79x plus rapide |
iPhone7 | 3,58x plus rapide | 12,03x plus rapide | 5,65x plus rapide | 3,46x plus rapide | 26,86x plus rapide |
Des captures d'écran de ces benchmarks peuvent être trouvées dans le dossier benchmarks.
// index.js
import { FastTrie } from 'react-native-fast-trie' ;
const trie = new FastTrie ( ) ;
console . log ( trie . contains ( 'test' ) ) ; // false
trie . insert ( 'test' ) ;
console . log ( trie . contains ( 'test' ) ) ; // true
console . log ( trie . find ( 'te' ) ) ; // ['test']
trie . batchInsert ( [ 'test2' , 'test3' ] ) ;
// Limit to only 2 results
console . log ( trie . find ( 'te' , 2 ) ) ; // ['test2', 'test3']
trie . delete ( 'test2' ) ;
console . log ( trie . contains ( 'test2' ) ) ; // false
FastTrie est une implémentation de trie hautes performances conçue pour les applications React Native. Il propose des opérations efficaces pour insérer des éléments, vérifier leur existence et rechercher des éléments avec un préfixe spécifique. L'implémentation fournit des options de personnalisation pour équilibrer entre la vitesse et l'utilisation de la mémoire.
FastTrieOptions
Ce type permet la configuration de l'instance FastTrie.
burstThreshold?: number
Spécifie la taille maximale d'un nœud de hachage de tableau avant qu'une rafale ne se produise. Une valeur plus élevée (par exemple, 16 384) est recommandée pour les recherches exactes, tandis que la valeur par défaut de 1 024 est optimisée pour les recherches de préfixes.
maxLoadFactor?: number
Détermine le facteur de charge du trie. Une valeur inférieure augmente la vitesse, tandis qu'une valeur plus élevée diminue l'utilisation de la mémoire. La valeur par défaut est 8,0.
FastTrie
Crée une nouvelle instance de FastTrie.
Paramètres :
options: FastTrieOptions
(facultatif)burstThreshold
et maxLoadFactor
.Exemple:
const trie = new FastTrie ( { burstThreshold : 2048 , maxLoadFactor : 10.0 } ) ;
insert(item: string): void
Insère une chaîne dans le trie.
trie . insert ( 'example' ) ;
batchInsert(items: string[]): void
Insère plusieurs chaînes dans le trie en une seule opération. Cette méthode est optimisée pour les insertions groupées et est plus efficace que l’insertion d’éléments individuellement.
trie . batchInsert ( [ 'apple' , 'apricot' , 'banana' ] ) ;
contains(item: string): boolean
Vérifie si une chaîne est présente dans le trie.
const isPresent = trie . contains ( 'example' ) ;
find(prefix: string, maxResults?: number): boolean
Recherche toutes les chaînes du trie qui commencent par le préfixe donné.
const results = trie . find ( 'ex' , 10 ) ;
delete(item: string): void
Supprime une chaîne si elle existe dans le trie
trie . delete ( 'apple' ) ;
Consultez le guide de contribution pour savoir comment contribuer au référentiel et au workflow de développement.
MIT
Fabriqué avec la bibliothèque create-react-native