[英]Internet Explorer Javascript performance problem
Internet Explorer中的JavaScript性能很糟糕。 没有新闻。 然而,有一些提示和技巧来加快它。 例如,有这三 部分 系列 。 我仍然发现自己无法从中挤出体面的表现。 也许你们中的一些人知道还有什么可以做的,所以它更快?
我想要做的是在Javascript中从头开始创建一个中等大小的表。 比方说,300行,每行10个单元格。 我的电脑需要大约5-6秒才能完成此操作。 好的,授予,这是一个5岁的钻机,但仍然太多了。 这是我的虚拟代码:
<html>
<body>
<script type="text/javascript">
function MakeTable(parent)
{
var i, j;
var table = document.createElement('table');
var insertRow = table.insertRow;
for ( i = 0; i < 300; i++ )
{
var row = insertRow(-1);
for ( j = 0; j < 10; j++ )
{
var cell = row.insertCell(-1);
cell.innerHTML = i + ' - ' + j;
}
}
parent.appendChild(table);
}
</script>
<div onclick="MakeTable(this);">Click Me!</div>
</body>
</html>
补充:嗯,显然字符串连接(使用array.join)是唯一的方法。 好吧,伤心,当然。 希望这样做是“正确的”DOM方式。 :)
这是我在寻找答案时发现的一个有趣链接:该页面使用五种不同的脚本/方法来生成表格。
根据他们的测试,使用字符串远比使用DOM / Table元素快。 http://www.quirksmode.org/dom/innerhtml.htm l
IE的性能问题的主要原因之一是DOM操作。 您希望尽可能高效地执行DOM操作。 这可能包括,取决于您的情况(基准!):
你可以尝试'Duff的设备':通过多次重复代码来展开循环:
for (var i = 0; i < count / 4; i++) {
doSomething();
doSomething();
doSomething();
doSomething();
}
显然这会将余数除以4,原始的Duff设备有一个聪明的方法,使用与循环混合的switch语句跳转到循环的中间。 Javascript不支持此功能,但您可以手动处理其余行。 数字4也是随机的,数字本身可以通过性能测试得出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.