การใช้งาน Trie ที่รวดเร็วและประหยัดหน่วยความจำสำหรับ React Native ใช้ HAT-trie ของ Tessel
npm install react-native-fast-trie
yarn add react-native-fast-trie
การเปรียบเทียบจะถูกนำมาเปรียบเทียบกับการใช้งาน JS ที่ใช้กันทั่วไป (แบบไตร) บนอุปกรณ์จริงที่สร้างขึ้นในโหมดรีลีส คุณสามารถสร้างโปรเจ็กต์ตัวอย่างบนอุปกรณ์ของคุณเพื่อสร้างผลลัพธ์เหล่านี้ขึ้นมาใหม่
การทดสอบมีดังนี้:
อุปกรณ์ | รายการคำเดียว | การแทรกแบทช์ | รายการคำทั้งหมด | ประกอบด้วย | หา |
---|---|---|---|---|---|
พิกเซล 5 | เร็วขึ้น 4.64 เท่า | เร็วขึ้น 16.86 เท่า | เร็วขึ้น 7.76 เท่า | เร็วขึ้น 2.94 เท่า | เร็วขึ้น 24.63 เท่า |
พิกเซล 3เอ | เร็วขึ้น 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 เป็นการใช้งาน Trie ประสิทธิภาพสูงที่ออกแบบมาสำหรับแอปพลิเคชัน React Native ให้การดำเนินการที่มีประสิทธิภาพสำหรับการแทรกองค์ประกอบ ตรวจสอบการมีอยู่ขององค์ประกอบ และการค้นหาองค์ประกอบที่มีคำนำหน้าเฉพาะ การใช้งานมีตัวเลือกการปรับแต่งเพื่อปรับสมดุลระหว่างความเร็วและการใช้หน่วยความจำ
FastTrieOptions
ประเภทนี้อนุญาตให้กำหนดค่าอินสแตนซ์ FastTrie
burstThreshold?: number
ระบุขนาดสูงสุดของโหนดแฮชอาร์เรย์ก่อนที่จะเกิดการระเบิด แนะนำให้ใช้ค่าที่สูงกว่า (เช่น 16,384) สำหรับการค้นหาแบบตรงทั้งหมด ในขณะที่ค่าเริ่มต้นคือ 1,024 ได้รับการปรับให้เหมาะสมสำหรับการค้นหาคำนำหน้า
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 ในการดำเนินการครั้งเดียว วิธีการนี้ได้รับการปรับให้เหมาะสมสำหรับการแทรกจำนวนมาก และมีประสิทธิภาพมากกว่าการแทรกทีละรายการ
trie . batchInsert ( [ 'apple' , 'apricot' , 'banana' ] ) ;
contains(item: string): boolean
ตรวจสอบว่ามีสตริงอยู่ในไตรหรือไม่
const isPresent = trie . contains ( 'example' ) ;
find(prefix: string, maxResults?: number): boolean
ค้นหาสตริงทั้งหมดใน trie ที่ขึ้นต้นด้วยคำนำหน้าที่กำหนด
const results = trie . find ( 'ex' , 10 ) ;
delete(item: string): void
ลบสตริงหากมีอยู่ในไตร
trie . delete ( 'apple' ) ;
ดูคู่มือการมีส่วนร่วมเพื่อเรียนรู้วิธีมีส่วนร่วมในพื้นที่เก็บข้อมูลและเวิร์กโฟลว์การพัฒนา
เอ็มไอที
สร้างด้วย create-react-native-library