React Native를 위한 빠르고 메모리 효율적인 Trie 구현입니다. Tessel의 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배 더 빠름 |
아이폰 15 프로 맥스 | 3.78배 더 빠름 | 10.33배 더 빠름 | 5.13배 더 빨라짐 | 3.43배 더 빠름 | 23.83배 더 빠름 |
아이폰 11 프로 맥스 | 4.65배 더 빠름 | 13.12배 더 빠름 | 5.21배 더 빠름 | 3.35배 더 빠름 | 23.79배 더 빠름 |
아이폰 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
단일 작업으로 여러 문자열을 트라이에 삽입합니다. 이 방법은 대량 삽입에 최적화되어 있으며 항목을 개별적으로 삽입하는 것보다 더 효율적입니다.
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' ) ;
저장소 및 개발 워크플로에 기여하는 방법을 알아보려면 기여 가이드를 참조하세요.
MIT
create-react-native-library로 제작됨