React Native 向けの高速でメモリ効率の高い Trie 実装。テッセル社のHAT-trieを使用。
npm install react-native-fast-trie
yarn add react-native-fast-trie
ベンチマークは、リリース モードで構築された実際のデバイス上で一般的に使用される JS 実装 (トライタイプ) と比較して取得されます。デバイス上でサンプル プロジェクトをビルドして、これらの結果を再現できます。
テストは次のとおりです。
デバイス | 単一の単語リスト | バッチ挿入 | すべてのワードリスト | 含まれています | 探す |
---|---|---|---|---|---|
ピクセル5 | 4.64倍高速 | 16.86倍高速 | 7.76 倍高速 | 2.94倍高速 | 24.63倍高速 |
ピクセル3a | 3.26 倍高速 | 14.67倍高速 | 5.54倍高速 | 3.06倍高速 | 26.23倍高速 |
ギャラクシーA10e | 2.94倍高速 | 9.83倍高速 | 4.84倍高速 | 3.95 倍高速 | 11.47倍高速 |
iPhone 15 プロマックス | 3.78 倍高速 | 10.33倍高速 | 5.13倍高速 | 3.43倍高速 | 23.83倍高速 |
iPhone 11 プロマックス | 4.65倍高速 | 13.12倍高速 | 5.21倍高速 | 3.35 倍高速 | 23.79 倍高速 |
iPhone 7 | 3.58倍高速 | 12.03倍高速 | 5.65倍高速 | 3.46 倍高速 | 26.86倍高速 |
これらのベンチマークのスクリーンショットは、ベンチマーク フォルダーにあります。
// 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 は、React Native アプリケーション用に設計された高性能トライ実装です。要素の挿入、存在の確認、特定のプレフィックスを持つ要素の検索のための効率的な操作を提供します。この実装では、速度とメモリ使用量のバランスをとるためのカスタマイズ オプションが提供されます。
FastTrieOptions
タイプこのタイプでは、FastTrie インスタンスの構成が可能です。
burstThreshold?: number
バーストが発生する前の配列ハッシュ ノードの最大サイズを指定します。正確な検索にはより高い値 (16,384 など) が推奨されますが、プレフィックス検索にはデフォルト値の 1024 が最適化されます。
maxLoadFactor?: number
トライの負荷率を決定します。値を低くすると速度が向上し、値を高くするとメモリ使用量が減少します。デフォルト値は 8.0 です。
FastTrie
クラスFastTrie の新しいインスタンスを作成します。
パラメータ:
options: FastTrieOptions
(オプション)burstThreshold
とmaxLoadFactor
が含まれます。例:
const trie = new FastTrie ( { burstThreshold : 2048 , maxLoadFactor : 10.0 } ) ;
insert(item: string): void
トライに文字列を挿入します。
trie . insert ( 'example' ) ;
batchInsert(items: string[]): void
1 回の操作で複数の文字列をトライに挿入します。この方法は一括挿入用に最適化されており、項目を個別に挿入するよりも効率的です。
trie . batchInsert ( [ 'apple' , 'apricot' , 'banana' ] ) ;
contains(item: string): boolean
トライに文字列が存在するかどうかを確認します。
const isPresent = trie . contains ( 'example' ) ;
find(prefix: string, maxResults?: number): boolean
指定されたプレフィックスで始まるトライ内のすべての文字列を検索します。
const results = trie . find ( 'ex' , 10 ) ;
delete(item: string): void
トライに文字列が存在する場合は削除します。
trie . delete ( 'apple' ) ;
リポジトリと開発ワークフローに貢献する方法については、貢献ガイドを参照してください。
マサチューセッツ工科大学
create-react-native-library で作成