读书人

javascript几种操作报表方法的性能对比

发布时间: 2012-10-06 17:34:01 作者: rapoo

javascript几种操作表格方法的性能对比

?

本文转自:http://hi.baidu.com/jz1108/blog/item/81ebe6b4561c247b8ad4b2ef.html

?

一日,同事说他习惯用inserRow和insertCell方法操作table元素,并说这个效率要比createElement和appendChild来的高。我不信,于是做了如下试验:使用不同方式创建一个1000行X10列的表格,对比代码所耗时间。
???
方法一:使用insertRow和insertCell

var table = document.createElement("table");document.body.appendChild(table);for (var i = 0; i < 1000; i ++){var row = table.insertRow(table.rows.length);for (var j = 0; j < 10; j ++){var cell = row.insertCell(row.cells.length);cell.innerHTML = "(" + i + ", " + j + ")";}}

以上代码执行时间为:172.688秒,整个过程中CPU占用率飙升到100%,IE也进入装死的状态。


方法二:使用createElement和appendChild

var table = document.createElement("table");document.body.appendChild(table);var tbody = document.createElement("tbody");table.appendChild(tbody);for (var i = 0; i < 1000; i ++){var row = document.createElement("tr");tbody.appendChild(row);for (var j = 0; j < 10; j ++){var cell = document.createElement("td");cell.innerHTML = "(" + i + ", " + j + ")";row.appendChild(cell);}}

以上代码执行时间为:3.026秒,速度提高这么多。

?

当然这还不是最快的,请看方法三:

var htmls = [];htmls.push("<table>");for (var i = 0; i < 1000; i ++){htmls.push("<tr>")for (var j = 0; j < 10; j ++){htmls.push("<td>(" + i + ", " + j + ")</td>");}htmls.push("</tr>");}htmls.push("</table>");document.getElementById("div1").innerHTML = htmls.join("");

这段代码执行时间是0.281秒。

?

可见使用innerHTML方式是最快的,createElement和appendhChild其次,最慢的是insertRow和insertCell。

读书人网 >JavaScript

热点推荐