Uma implementação Trie rápida e com uso eficiente de memória para React Native. Usa o HAT-trie de Tessel.
npm install react-native-fast-trie
yarn add react-native-fast-trie
Os benchmarks são obtidos em comparação com uma implementação JS comumente usada (tipificada) em dispositivos reais criados no modo de liberação. Você pode criar o projeto de exemplo em seu dispositivo para reproduzir esses resultados.
Os testes são os seguintes:
Dispositivo | Lista de palavras únicas | Inserção em lote | Todas as listas de palavras | Contém | Encontrar |
---|---|---|---|---|---|
Pixel 5 | 4,64x mais rápido | 16,86x mais rápido | 7,76x mais rápido | 2,94x mais rápido | 24,63x mais rápido |
Pixel 3a | 3,26x mais rápido | 14,67x mais rápido | 5,54x mais rápido | 3,06x mais rápido | 26,23x mais rápido |
Galáxia A10e | 2,94x mais rápido | 9,83x mais rápido | 4,84x mais rápido | 3,95x mais rápido | 11,47x mais rápido |
iPhone 15 Pro Máx. | 3,78x mais rápido | 10,33x mais rápido | 5,13x mais rápido | 3,43x mais rápido | 23,83x mais rápido |
iPhone 11 Pro Máx. | 4,65x mais rápido | 13,12x mais rápido | 5,21x mais rápido | 3,35x mais rápido | 23,79x mais rápido |
iPhone 7 | 3,58x mais rápido | 12,03x mais rápido | 5,65x mais rápido | 3,46x mais rápido | 26,86x mais rápido |
Capturas de tela desses benchmarks podem ser encontradas na pasta 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 é uma implementação de teste de alto desempenho projetada para aplicativos React Native. Oferece operações eficientes de inserção de elementos, verificação de sua existência e localização de elementos com prefixo específico. A implementação fornece opções de personalização para equilibrar velocidade e uso de memória.
FastTrieOptions
Este tipo permite a configuração da instância FastTrie.
burstThreshold?: number
Especifica o tamanho máximo de um nó hash de matriz antes que ocorra uma explosão. Um valor mais alto (por exemplo, 16.384) é recomendado para pesquisas exatas, enquanto o valor padrão de 1.024 é otimizado para pesquisas de prefixo.
maxLoadFactor?: number
Determina o fator de carga do teste. Um valor mais baixo aumenta a velocidade, enquanto um valor mais alto diminui o uso de memória. O valor padrão é 8,0.
FastTrie
Cria uma nova instância do FastTrie.
Parâmetros:
options: FastTrieOptions
(opcional)burstThreshold
e maxLoadFactor
.Exemplo:
const trie = new FastTrie ( { burstThreshold : 2048 , maxLoadFactor : 10.0 } ) ;
insert(item: string): void
Insere uma string na tentativa.
trie . insert ( 'example' ) ;
batchInsert(items: string[]): void
Insere várias strings no teste em uma única operação. Este método é otimizado para inserções em massa e é mais eficiente do que inserir itens individualmente.
trie . batchInsert ( [ 'apple' , 'apricot' , 'banana' ] ) ;
contains(item: string): boolean
Verifica se uma string está presente na tentativa.
const isPresent = trie . contains ( 'example' ) ;
find(prefix: string, maxResults?: number): boolean
Encontra todas as strings na tentativa que começam com o prefixo fornecido.
const results = trie . find ( 'ex' , 10 ) ;
delete(item: string): void
Exclui uma string se ela existir na tentativa
trie . delete ( 'apple' ) ;
Consulte o guia de contribuição para saber como contribuir com o repositório e o fluxo de trabalho de desenvolvimento.
MIT
Feito com biblioteca create-react-native