纸头折飞机
欢迎大家加入KitJs官方高级QQ群88093625,讨论前端技术,上海携程招聘H5,iOS,android,产品,设计,交互,测试,有意者发简历到xueduanyang1985@163.com

最近做项目时候,被select的下拉提示搞烦了,破服务器响应速度贼慢,而下拉的数据又狂多,9k多行
用dynamicAjax分析,发现性能慢就慢在不断的select.options的for遍历循环上
索性不使用数组循环的方法跑suggest,改用字典算法
https://github.com/xueduany/KitJs/blob/master/KitJs/src/js/TreeDict.js
算法的testcase见http://xueduany.github.com/KitJs/KitJs/demo/TreeDict/demo.html

改进后,options的存储方式变为

{

"0" : {

"1" : {

"1" : "a"

},

"2" : {

"5" : "b"

},

"3" : {

"2" : "c"

},

}

"1" : {

"1" : "9" : "d"

}

...

}

遍历算法又O(n),缩小到f(n),理论上性能可以提高n次幂倍

经过测试,改过之后,suggest性能大幅提升,数据量上10w,chrome都不卡,ie只是略微有点卡,不过也在可以接受的方法

Demo图片

demo地址 

http://xueduany.github.com/KitJs

注释说明略显粗糙,需要的兄弟可以线下联系我

posted on   薛端阳  阅读(3587)  评论(16编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)

< 2012年4月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12
点击右上角即可分享
微信分享提示