【问题标题】:How much of an effect can CPU have on JavaScript setIntervalCPU 对 JavaScript setInterval 的影响有多大
【发布时间】:2011-10-03 19:27:44
【问题描述】:

我编写了一个小型 jquery 插件,它基本上将 html 元素中的所有单词转换为 span,使它们不可见,然后将它们动画化到视图中。我这样做是为了让您可以定义加载整个元素所需的时间,并且根据测试,数学似乎是正确的,但实际上需要更长的时间。

见 jsfiddle:http://jsfiddle.net/A2DNN/

注意变量“per”和“ms”,这基本上告诉它每“ms”毫秒处理“per”个单词。

在日志中,您会看到它每 1 毫秒处理 1 个单词,这应该会导致加载时间快得多。

所以我只是想知道,CPU 是否有可能在这里形成瓶颈?在那个 JS 正在将项目淡入视图中,这是由 CPU 处理的,这在图形处理方面不是很快。

这听起来几乎是愚蠢的,我希望这些天 CPU 会嘲笑这样的一小部分工作负载。

【问题讨论】:

  • 不小的工作量,考虑到您的 JavaScript 必须经过大量抽象层才能在实际金属上运行。
  • 绝大多数工作不在javascript本身;它位于浏览器的 DOM 中,因为它必须创建一个由 span 标签组成的重叶树,更不用说每个标签的内联样式了。
  • 好的,所以基本上 JS 不是瓶颈.. DOM 是。真可惜,估计暂时我无法解决这个问题。随时提交您的评论作为答案。

标签: javascript jquery performance cpu


【解决方案1】:

这是由于浏览器的 JavaScript 实现强制设置了最小超时。你不能有 1ms 的超时,它比这略多。这里已经有一个discussion 与此相关。

【讨论】:

  • 好像就是这样。我刚刚在 Chrome 中尝试过,它的加载速度明显更快(我使用的是 Firefox)。我明白他们为什么要施加限制,但与此同时,他们觉得这是一种令人讨厌的解决方法,以防止滥用。
  • 也许吧,但真的有必要设置 1 毫秒的超时时间吗?您是否尝试过在每个函数调用中处理多个 span?您无法真正分辨十个单词是同时出现还是延迟 1 毫秒。
  • 是的,这可能是一个很好的折衷方案,感谢您的建议。
  • 我按照你的建议做了,将其设置为每 5 毫秒的最小进程跨度,结果看起来与 Chrome 完全相同(即它有效,谢谢!)。不过仍然很奇怪,似乎 Firefox 会自动调整我给它的间隔时间,但这个数字显然高于浏览器允许的最小毫秒数。很奇怪。
  • 我从文档中记得,从 v4 开始在 FF 中使用 4ms 的最小超时,但也许它仅在您将浏览器切换到标准合规模式时使用?您是否尝试过使用 HTML5 或 XHTML DOCTYPE?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
  • 2013-11-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
相关资源
最近更新 更多