【发布时间】:2011-08-18 05:00:41
【问题描述】:
对于我想要完成的任务,我可以使用createElement() 或innerHTML 和一个字符串。
到底哪个更快?很长一段时间以来,我一直认为字符串比返回相同结果的内置函数要慢得多,但这是真的吗?
我问是因为我已经尝试过 createElement() 并且似乎必须添加到每个元素的所有属性都会减慢速度。不仅如此,它还占用更多空间。我有一个循环,它根据数组的长度从 1 无穷大开始,但最好在显示减速迹象之前添加多达 50 个左右的元素。在我希望创建的这 50 个左右的元素中,还有大约 10 个元素。因此,总的来说,它实际上创建了大约 500 个元素。
通过使用内置函数创建元素,我注意到速度比平时快了一点,并且由于我在重置该数组(数组是 5D 并且未在同一个脚本中设置)鬼混,我想在重新开始之前,要知道哪个是真正更好的,无论是速度还是更好的做法。
【问题讨论】:
-
也许你应该创建两个版本并测试哪个版本最快
-
我怀疑无论哪种方式都会有很大的性能差异。我建议选择最容易编码和维护的方法。我使用的一般经验法则是,对于较小的更改(更新文本、添加链接等)使用
innerHTML,对于重大更改(将许多链接或组件添加到单个容器,或任何超过2 个节点深)使用createElement()。 -
非常有趣的问题,我很想找到一些实际的基准。我已经看到 js-widgets 在加载时使用 json 数据而不是使用预加载(和隐藏)来水合相当大的嵌套 createElement 结构html模板直接复制。但即使这样也可能会在数百个项目的列表视图中丢失到 innerHTML
标签: javascript performance innerhtml createelement