首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Internet性能问题

Internet性能问题
EN

Stack Overflow用户
提问于 2009-04-03 18:46:14
回答 2查看 5.7K关注 0票数 5

Internet中的JavaScript性能糟糕透了。那里没有新闻。然而,有一些技巧和技巧来加快它的速度。例如,有一个 零件 系列。尽管如此,我还是发现自己无法从中榨取体面的表现。也许你们中的一些人知道还能做些什么,这样才能更快些?

我想做的是在Javascript中从头开始创建一个中等大小的表。比方说,300行,每个单元10个。在我的电脑上大约需要5-6秒才能做到这一点。好吧,当然,这是一个有5年历史的钻井平台,但还是太多了。这是我的虚拟代码:

代码语言:javascript
复制
<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>

补充道: Hmm,显然字符串连接(与array.join)是唯一的方法。当然,很难过。希望用“合适的”道姆的方式来做。:)

EN

回答 2

Stack Overflow用户

发布于 2009-04-03 19:01:31

IE性能问题的主要原因之一是DOM操作。您希望尽可能高效地执行DOM操作。这可以包括,取决于您的情况(基准!):

  • 离线创建DOM结构;将顶级元素保留在文档之外(创建,但不是追加),然后在文档准备好时将其附加到文档中,而不是在创建DOM时将每个元素追加到DOM中
  • 编写innerHTML而不是DOM操作
票数 1
EN

Stack Overflow用户

发布于 2009-04-03 18:54:46

您可以尝试“Duff‘s Device”:通过多次重复代码来展开循环:

代码语言:javascript
复制
for (var i = 0; i < count / 4; i++) {
  doSomething();
  doSomething();
  doSomething();
  doSomething();
}

显然,当除以4时,剩下的部分就剩下了,原来的Duff设备有一种巧妙的方法,可以使用一个开关语句与循环混合,跳到循环的中间。Javascript不支持这一点,但是您可以手动处理其余的行。此外,数字4是随机的,数字本身可以通过性能测试得到。

另见:http://www.websiteoptimization.com/speed/10/10-3.html

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/715158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档