Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

词库9万检索直接崩了 #34

Closed
superlbr opened this issue Aug 24, 2022 · 8 comments
Closed

词库9万检索直接崩了 #34

superlbr opened this issue Aug 24, 2022 · 8 comments

Comments

@superlbr
Copy link

。。

@xmflswood
Copy link
Owner

测试了10W长度的文本没问题,
9W是指列表数量吗? 可不可以给个代码示例我测试下?

@xmflswood
Copy link
Owner

我这里试了50W条数据,每条为 3个中文加一串数字,用时2.3s,内存也没有明显变化
impicture_20220827_151450

impicture_20220827_151422

推测是不是其他部分导致的?
比如同时展示太多数据,导致dom数量太多(考虑分页)
或者采用响应式,导致键入后马上开始计算(考虑防抖)

@superlbr
Copy link
Author

@xmflswood
Copy link
Owner

@superlbr
这个不是因为这个库导致的,这个场景下主要是由于dom数量太大,且数据在vue中是保存在data中响应式导致的(当然也包括标红的代码部分)。
在这个情况下即使是直接采用indexOf直接匹配也有问题。(你可以试试输入中文,输入中文的情况下,这个库会直接采用indexOf来匹配,跟pinyin无关,在我这里看也是直接崩溃的)


我测试了下,如果是手动输入yonghu,就会崩溃,如果是直接粘贴yonghu就不会(不打开F12,否则即使是输入中文也会崩溃)
impicture_20220827_155108
可以试试把input部分改成防抖减少计算。
当然这个做法还是有崩溃的风险
改为分页展示 + input防抖 就好了。

计算过程按我的测试,50W条人名数据大概占用0.8秒(单条人名2-4字符)
impicture_20220827_155630
impicture_20220827_155637
impicture_20220827_155704

@superlbr
Copy link
Author

主要是想验证下js拼音输入的可行性,如果不是标红而是展示列表应该好一些。对比了下pinyin-engine,感觉还可以再压榨一点性能。

@superlbr
Copy link
Author

superlbr commented Sep 9, 2022

好像没看到建索引。。

@xmflswood
Copy link
Owner

@superlbr 两个库的实现是不一样的,不建索引主要是考虑长字符串或者长多音字的时候的性能问题。
pinyin-engine-issues

@superlbr
Copy link
Author

superlbr commented Sep 9, 2022

长串就不走索引,设一个阀值

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants