Internet Explorer Javascript性能问题
Internet Explorer中的JavaScript性能很差。没有消息。然而,有一些提示和技巧可以加速它。例如,有这样一个例子。但我发现自己无法从中挤出像样的表现。也许你们中的一些人知道还有什么别的办法,这样做会更快 我想做的是用Javascript从头开始创建一个中等大小的表。比如说,300行,每行10个单元格。在我的电脑上做这个大约需要5-6秒。好吧,当然,这是一个5年的钻机,但这仍然太多。这是我的虚拟代码:Internet Explorer Javascript性能问题,javascript,internet-explorer,performance,Javascript,Internet Explorer,Performance,Internet Explorer中的JavaScript性能很差。没有消息。然而,有一些提示和技巧可以加速它。例如,有这样一个例子。但我发现自己无法从中挤出像样的表现。也许你们中的一些人知道还有什么别的办法,这样做会更快 我想做的是用Javascript从头开始创建一个中等大小的表。比如说,300行,每行10个单元格。在我的电脑上做这个大约需要5-6秒。好吧,当然,这是一个5年的钻机,但这仍然太多。这是我的虚拟代码: <html> <body> <sc
<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>
函数MakeTable(父级)
{
varⅠ,j;
var table=document.createElement('table');
var insertRow=table.insertRow;
对于(i=0;i<300;i++)
{
变量行=插入行(-1);
对于(j=0;j<10;j++)
{
变量单元格=行插入单元格(-1);
cell.innerHTML=i+'-'+j;
}
}
父.子(表);
}
点击我!
添加:Hmm,显然字符串连接(使用array.join)是唯一的方法。好吧,当然很伤心。希望以“适当”的方式完成任务。:) 您可以尝试“达夫设备”:通过多次重复代码来解开循环:
for (var i = 0; i < count / 4; i++) {
doSomething();
doSomething();
doSomething();
doSomething();
}
for(变量i=0;i
很明显,如果将余数除以4,那么原来的达夫设备就有了一种巧妙的方法,可以使用混合在循环中的switch语句跳转到循环的中间。Javascript不支持这一点,但您可以手动处理其余行。数字4也是随机的,数字本身可以通过性能测试得到
另请参见:在寻找有关此问题的答案时,我发现了一个有趣的链接: 该页面使用五种不同的脚本/方法生成表格。
根据他们的测试,使用字符串比使用DOM/表元素快得多。
lIE性能问题的主要原因之一是DOM操作。您希望尽可能高效地执行DOM操作。根据您的情况(基准!),这可能包括:
- 离线创建DOM结构;将顶层元素保留在文档之外(创建,但不附加),然后在文档准备就绪时将其追加到文档中,而不是在创建时将每个元素追加到DOM中
- 编写innerHTML而不是DOM操作