最近做项目时候,被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
注释说明略显粗糙,需要的兄弟可以线下联系我