第1页共4页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共4页本文主要是出于有朋友使用我原来写的autocomplete的JS控件
当数据量大的时候,会出现效率极其慢的情况,我在这段时间做出的一些测试也及一些经验,与大家分享,如果有错的地方,还请指出
经过测试,我们会发现如下的情况或者说的结论,如果您的测试结果与我的不符,请说明原因,以便相互学习
1)当一个较大的HTML字符串给到obj
innerHTML时会出现麻烦
也就是说当一个较大的字符串在赋予一个Element的innerHTML时,这个过程将可能是我们无法容忍的
(而事实上这并非JS的错,而确实是String数据量太多)2)用拼合字符串的方法可以使效率提高,在字符串较大时,2)的情况仍然出现
超过一定的数量,速度会明显慢下来
3)正则匹配的方法会比平常遍历的方法要高效一些
4)在执行过程中,绑定事件的时间会花费更多一些
测试在1w条数据情况下,大约是匹配以及生成HTML数据的30倍,也就是说生成数据总花费100ms,而绑定事件则需要3000ms
5)总体来说
IE的速度要比Mozilla要慢(我用的是Firefox1
5做的测试)
6)大数据量时,不要用DOM生成Element
7)非JS内置方法,也许会引发很多时间过多重复的劳动而且可能事得其反
建议尽可能利会内置方法
总结问题:一、在把字符串给到innerHTML上
二、循环绑定事件所花费时间
三、生成我们需要的DIV所花时间
四、不同的浏览器问题
下面对症下药:问题一我们可以做的没有其它的,只有尽可能少的HTML字符串,比如最基本的一个DIV,可以这样写也可以这样写,第二种就比第一种速度明显要快的
如果还不行的话,请看下面这个方法对你是否合适在做程序的时候突然想起来51js上PKtree,一位版主所写的一棵树,1百万的一个节点,动