最近遇到js的效率问题,是关于在页面中新增元素的问题。
假设我们有页面如下:
<script> <BR>// 脚本位置 <BR></script>
现在,我们要往div1中添加对象,大家都知道在为web页面增加一个元素时可以使用如下代码:
//方法1
div1.innerHTML = '测试';
或者:
//方法2
var a = document.createElement('a');
a.innertText = '测试';
div1.appendChild(a);
在网上搜索到一个探讨js效率问题的文章,其大概意思是说方法2的效率高,其对比代码如下:
// 方法1
function init(){
var staDate = new Date();
var doc = window.document;
for(var i=0;ivar str="
container.innerHTML += str;
}
alert(new Date - staDate);
}
//方法2
function init(){
var staDate = new Date();
var doc = window.document;
for(var i=0;ivar oDiv = doc.createElement("div");
var oText = doc.createTextNode("text");
oDiv.appendChild(oText);
container.appendChild(oDiv);
oDiv.style.id = "div_"+i;
oDiv.style.width = "100px";
oDiv.style.height = "20px";
oDiv.style.backgroundColor = "#eee";
}
alert(new Date - staDate);
}
其页面中有:
从执行效果来看方案2要比方案1快10倍左右,到底这是不是真的呢?其实上面的测试代码是有待商榷的,且看其方法1中的循环代码:
for(var i=0;ivar str="
container.innerHTML += str;
}
其中有很多字符串操作,而且除了使用+号来连接字符串外,还使用了+=操作符,这就是问题的所在了,在javascript中这种操作字符串的做法是严重影响效率的,所以使用上面的方法来测试createEmenent和innerHTML的效率对innerHTML是不公平的, 据此看来很可能是字符串操作吃掉了innerHTML的性能,于是写了下面的测试代码:
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
经测试发现:
1、在创建的对象较少(0-大约10左右)时,innerHTML和createElement效率差不多,测试值悠忽不定;
2、在创建对象多于20时,innerHTML要比createElement效率高很多,平均测试差不多createElement耗时是innerHTML的两倍。
总结:其实效率也在于编写的代码,在知道可用的API的效率后,怎么编写代码也是非常重要的,否则应由的执行效率不能体现出来,就如上面从网上搜到的那些代码,得出一个与事实相悖的结论。

在当前智能手机市场上,处理器可谓是各大手机厂商争夺的焦点之一。作为手机的“大脑”,处理器的性能直接影响到手机的运行速度、多任务处理能力以及游戏体验等方面。目前,麒麟8000处理器作为华为旗舰手机的配备,备受关注。那么,它与骁龙处理器相比,究竟有何优劣呢?首先,从性能方面来看,麒麟8000处理器采用了最新的台积电5nm工艺制造,拥有更加先进的制程技术,提升了能

vivoX100和vivoX100Pro性能对比分析随着智能手机市场的竞争日益激烈,各大品牌不断推出新款产品来满足消费者需求。vivo作为一家备受关注的手机品牌,近年来推出了众多备受好评的产品,其中vivoX100和vivoX100Pro是备受期待的新品。两款手机在外观设计、性能配置、拍照功能等方面有何不同?今天我们就来对比分析vivoX100

苹果处理器与骁龙8gen2对比分析随着移动智能设备的不断发展,处理器作为设备性能的核心组件,一直备受关注。苹果公司和高通公司一直是移动处理器领域的领军者,分别推出了自家的处理器产品,分别是苹果处理器和骁龙处理器。其中,苹果处理器以其强大的性能和出色的功耗控制而著称,而高通骁龙处理器则以其优秀的通信技术和多功能性而赢得了用户的青睐。本文将对苹果处理器和骁龙8g

今年初,当Microsoft和Canonical发布Windows10Bash和Ubuntu用户空间,我尝试做了一些初步性能测试UbuntuonWindows10对比原生Ubuntu,这次我发布更多的,关于原生纯净的Ubuntu和基于Windows10的基准对比。Windows的Linux子系统测试完成了所有测试,并随着Windows10周年更新放出。默认的Ubuntu用户空间还是Ubuntu14.04,但是已经可以升级到16.04。所以测试首先在14.04测试,完成后将系统升级升级到16.04

天玑8200与骁龙的性能对比:究竟孰强近年来,随着智能手机市场的日益竞争激烈,各大芯片厂商也在不断地推陈出新,力求在性能上取得更大突破。其中,联发科的天玑8200系列和高通的骁龙系列被广泛认为是当前智能手机市场上最为出色的芯片之一。那么,在天玑8200和骁龙之间,究竟孰强呢?今天我们就来对这两款处理器进行性能对比,一探究竟。首先,让我们先来了解一下天玑820

大家期待的win10正式版已经发布啦,对于正在使用win7的同学来说肯定一直在纠结到底要不要将电脑系统升级到win10,升级后会不会比win7系统更好?是否支持常用的所有软件?win7和win10哪个好?他们的区别又是什么?对此,小编给出了win10与win7对比的一些解答。微软推出最新win10系统,很多电脑用户对Win10也甚是关注。大家也疑惑,windows10和win7有什么区别?win7和windows10哪个会比较好用。Win7系统稳定安全是目前使用用户最多,也是最受欢迎的Windo

MySQL与MongoDB:两个数据库系统的性能对比随着互联网的发展和数据量的不断增长,数据库的性能和可伸缩性变得愈发重要。MySQL和MongoDB是两个常用的数据库系统,它们在处理大数据量和高并发请求时有着不同的表现。本文将对MySQL和MongoDB进行性能对比,并通过代码示例来说明它们的差异。MySQL是一种关系型数据库,以其稳定性和成熟的特性而著名

权威基准测试表明,Echo、Gin、Fasthttp、Iris和Buffalo是性能最佳的Go框架。EchoAPI端点响应时间最快,其次是GinWebUI,而Fasthttp定时任务响应时间最短。最佳实践包括使用缓存、并发模式和代码优化。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版