循环调用innerHTML属性时进行性能优化1000多倍
2019-06-15 18:10
1571 查看
innerHTML是一个JavaScript访问dom的API,由于js和dom时两个相互独立的功能只要通过接口彼此连接,就会产生消耗。
所以访问dom元素的有代价的,修改元素则更为昂贵,因为他会导致浏览器重新计算页面的几何变化。
最坏的情况是在循环中访问或修改元素,尤其是对HTML元素集合循环操作。
这是下面两次写法循环15000次在谷歌浏览器上的差距,你没有看错,这两种写法的差距能到达1000多倍
所以访问dom元素的有代价的,修改元素则更为昂贵,因为他会导致浏览器重新计算页面的几何变化。
最坏的情况是在循环中访问或修改元素,尤其是对HTML元素集合循环操作。
这是下面两次写法循环15000次在谷歌浏览器上的差距,你没有看错,这两种写法的差距能到达1000多倍
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="here">1</div> <script> function innerHTMLLoop(){ console.time(); for(var count = 0; count <15000; count++){ document.getElementById('here').innerHTML += 'a'; } console.timeEnd(); } innerHTMLLoop(); function innerHTMLLoop1(){ console.time(); var content = ''; for(var count = 0; count <15000; count++){ content += 'a'; } document.getElementById('here').innerHTML += content; console.timeEnd(); } innerHTMLLoop1() </script> </body></html>
- 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
- 31
相关文章推荐
- Loadrunner 调用 Webservice 接口 进行 性能测试 时的方法及优化总结
- java性能优化开发之--循环内进行代码控制
- Loadrunner调用Webservice接口进行性能测试时的方法及优化总结
- 对对象类型和调用方法属性进行存储以提升反射性能
- 对对象类型和调用方法属性进行存储以提升反射性能
- 对对象类型和调用方法属性进行存储以提升反射性能
- Java Web性能优化之一:减少DAO层的调用次数
- 优化Java调用Nashorn引擎的性能
- fir.im Weekly - 如何进行 Android App 性能优化
- 架构相关:组件化/模块化/工程化/性能优化/开发规范与团队协作/组件间调用与通信(flex/redux)/调试与测试
- android 对for循环进行优化
- 使用valgrind进行后台服务器的性能优化
- 使用XCode进行iOS App性能优化
- JNI/NDK开发指南(八)---JNI调用性能测试及优化
- 几篇优化.net动态调用性能的文章
- oracle实例的内存(SGA和PGA)进行调整,优化数据库性能
- 使用多边形网格对cocos2dx进行性能优化
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 看Linux网管员如何进行网络性能优化
- 第六章——根据执行计划优化性能(1)——理解哈希、合并、嵌套循环连接策略