Una implementación Trie rápida y eficiente en memoria para React Native. Utiliza el HAT-trie de Tessel.
npm install react-native-fast-trie
yarn add react-native-fast-trie
Se toman puntos de referencia en comparación con una implementación JS de uso común (tipo trie) en dispositivos reales creados en modo de lanzamiento. Puede crear el proyecto de ejemplo en su dispositivo para reproducir estos resultados.
Las pruebas son las siguientes:
Dispositivo | Lista de palabras única | Insertar lote | Todas las listas de palabras | Contiene | Encontrar |
---|---|---|---|---|---|
Píxel 5 | 4,64 veces más rápido | 16,86 veces más rápido | 7,76 veces más rápido | 2,94 veces más rápido | 24,63 veces más rápido |
Píxel 3a | 3,26 veces más rápido | 14,67 veces más rápido | 5,54 veces más rápido | 3,06 veces más rápido | 26,23 veces más rápido |
Galaxia A10e | 2,94 veces más rápido | 9,83 veces más rápido | 4,84 veces más rápido | 3,95 veces más rápido | 11,47 veces más rápido |
iPhone 15 Pro Max | 3,78 veces más rápido | 10,33 veces más rápido | 5,13 veces más rápido | 3,43 veces más rápido | 23,83 veces más rápido |
iPhone 11 Pro Max | 4,65 veces más rápido | 13,12 veces más rápido | 5,21 veces más rápido | 3,35 veces más rápido | 23,79 veces más rápido |
iPhone 7 | 3,58 veces más rápido | 12,03 veces más rápido | 5,65 veces más rápido | 3,46 veces más rápido | 26,86 veces más rápido |
Las capturas de pantalla de estos puntos de referencia se pueden encontrar en la carpeta de puntos de referencia.
// 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 es una implementación trie de alto rendimiento diseñada para aplicaciones React Native. Ofrece operaciones eficientes para insertar elementos, verificar su existencia y encontrar elementos con un prefijo específico. La implementación proporciona opciones de personalización para equilibrar la velocidad y el uso de memoria.
FastTrieOptions
Este tipo permite la configuración de la instancia FastTrie.
burstThreshold?: number
Especifica el tamaño máximo de un nodo hash de matriz antes de que se produzca una ráfaga. Se recomienda un valor más alto (por ejemplo, 16.384) para búsquedas exactas, mientras que el valor predeterminado de 1024 está optimizado para búsquedas de prefijo.
maxLoadFactor?: number
Determina el factor de carga del trie. Un valor más bajo aumenta la velocidad, mientras que un valor más alto disminuye el uso de memoria. El valor predeterminado es 8,0.
FastTrie
Crea una nueva instancia de FastTrie.
Parámetros:
options: FastTrieOptions
(opcional)burstThreshold
y maxLoadFactor
.Ejemplo:
const trie = new FastTrie ( { burstThreshold : 2048 , maxLoadFactor : 10.0 } ) ;
insert(item: string): void
Inserta una cadena en el trie.
trie . insert ( 'example' ) ;
batchInsert(items: string[]): void
Inserta varias cadenas en el trie en una sola operación. Este método está optimizado para inserciones masivas y es más eficiente que insertar elementos individualmente.
trie . batchInsert ( [ 'apple' , 'apricot' , 'banana' ] ) ;
contains(item: string): boolean
Comprueba si hay una cadena presente en el trie.
const isPresent = trie . contains ( 'example' ) ;
find(prefix: string, maxResults?: number): boolean
Encuentra todas las cadenas del trie que comienzan con el prefijo dado.
const results = trie . find ( 'ex' , 10 ) ;
delete(item: string): void
Elimina una cadena si existe en el trie.
trie . delete ( 'apple' ) ;
Consulte la guía de contribución para aprender cómo contribuir al repositorio y al flujo de trabajo de desarrollo.
MIT
Hecho con create-react-native-library