Javascript createElement和innerHTML增加页面元素的性能对比_javascript技巧
最近遇到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的效率后,怎么编写代码也是非常重要的,否则应由的执行效率不能体现出来,就如上面从网上搜到的那些代码,得出一个与事实相悖的结论。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

在目前智慧型手機市場上,處理器可謂是各大手機廠商爭奪的焦點之一。作為手機的“大腦”,處理器的性能直接影響到手機的運行速度、多任務處理能力以及遊戲體驗等方面。目前,麒麟8000處理器作為華為旗艦手機的配備,備受關注。那麼,它與驍龍處理器相比,究竟有何優劣呢?首先,從性能方面來看,麒麟8000處理器採用了最新的台積電5nm製程製造,擁有更先進的製程技術,提升了能

vivoX100和vivoX100Pro效能比較分析隨著智慧型手機市場的競爭日益激烈,各大品牌不斷推出新款產品來滿足消費者需求。 vivo作為一個備受關注的手機品牌,近年來推出了許多備受好評的產品,其中vivoX100和vivoX100Pro是備受期待的新品。兩款手機在設計、性能配置、拍照功能等方面有何不同?今天我們就來比較分析vivoX100

蘋果處理器與驍龍8gen2比較分析隨著行動智慧型裝置的不斷發展,處理器作為設備效能的核心組件,一直備受關注。蘋果和高通一直是行動處理器領域的領導者,分別推出了自家的處理器產品,分別是蘋果處理器和驍龍處理器。其中,蘋果處理器以其強大的性能和出色的功耗控製而著稱,而高通驍龍處理器則以其優秀的通訊技術和多功能性而贏得了用戶的青睞。本文將對蘋果處理器和驍龍8g

麒麟8000處理器效能比較:與驍龍處理器的差異有多大隨著智慧型手機市場的不斷發展,手機處理器作為手機的核心零件之一,對手機效能的影響越來越大。作為兩大手機處理器巨頭之一的華為和高通,其代表性的處理器產品麒麟和驍龍系列備受消費者關注。在最新一代中,華為推出了麒麟8000系列處理器,而高通則推出了驍龍888系列處理器。兩者在性能上的表現一直備受關注,本文將主要對比

今年初,當Microsoft和Canonical發布Windows10Bash和Ubuntu用戶空間,我嘗試做了一些初步性能測試UbuntuonWindows10對比原生Ubuntu,這次我發布更多的,關於原生純淨的Ubuntu和基於Windows10的基準對比。 Windows的Linux子系統測試完成了所有測試,並隨著Windows10週年更新釋放。預設的Ubuntu用戶空間還是Ubuntu14.04,但已經可以升級到16.04。所以測試先在14.04測試,完成後將系統升級升級到16.04

大家期待的win10正式版已經發表啦,對於正在使用win7的同學來說肯定一直在糾結到底要不要將電腦系統升級到win10,升級後會不會比win7系統更好?是否支援常用的所有軟體? win7和win10哪個好?他們的差別又是什麼?對此,小編給了win10與win7比較的一些解答。微軟推出最新win10系統,許多電腦用戶對Win10也甚是關注。大家也有疑惑,windows10和win7有什麼差別? win7和windows10哪個會比較好用。 Win7系統穩定安全是目前使用使用者最多,也是最受歡迎的Windo

天璣8200與驍龍的性能比較:究竟孰強近年來,隨著智慧型手機市場日益競爭的激烈,各大晶片廠商也不斷地推陳出新,力求在性能上取得更大突破。其中,聯發科的天璣8200系列和高通的驍龍系列被廣泛認為是目前智慧型手機市場上最為出色的晶片之一。那麼,在天璣8200和驍龍之間,究竟孰強呢?今天我們就來對這兩款處理器進行效能對比,一探究竟。首先,讓我們先來了解天璣820

MySQL與MongoDB:兩個資料庫系統的效能比較隨著網路的發展和資料量的不斷增長,資料庫的效能和可擴展性變得愈發重要。 MySQL和MongoDB是兩個常用的資料庫系統,它們在處理大數據量和高並發請求時有著不同的表現。本文將對MySQL和MongoDB進行效能對比,並透過程式碼範例來說明它們的差異。 MySQL是一種關係型資料庫,以其穩定性和成熟的特性而聞名
