JavaScript:处理器速度和代码速度之间的关系是什么?

JavaScript: what is the relationship between processor speed and code speed?

本文关键字:速度 关系 是什么 之间 代码 处理器 JavaScript      更新时间:2023-09-26

我希望我的处理器越快,我的代码运行得越快。

我可以使用。

测量代码到毫秒级的精度。
new Date.getTime()

两者之间的相关性是什么?

我怎么能指望这与一个运行在3.2 GHz的处理器有关呢?

谁能量化这种关系,即使它是一个非常粗略的估计?

// start_time
run some simple code to be timed.
// end_time

分配给JS脚本的[EDIT: CPU]时钟时间由许多因素决定,包括:

    <
  • 浏览器/版本/gh>操作系统
  • 当前电源状态

可以在Windows 8的高级电源选项菜单中看到这个演示。展开Internet Explorer节点,您将注意到下面的条目是针对JavaScript timer frequency的。这正是你所认为的——一个控制JS时钟"滴答"频率的设置。一秒钟内的节拍越多,JS引擎执行代码的频率就越高,执行的代码越多,需要的能量就越多。

那么回答你的问题:是的,在非常普遍的意义上,处理器时钟速度可以决定一个特定的JS运行有多快,但假设它是一个直接的相关性是错误的。

编辑(更多信息):我不能挖掘链接,但我会更新这里,如果我找到它。使用setTimeoutsetInterval,您可以传递给这些方法的最小时间单位是100(ms)。有可能有比这更高的频率,但100ms是所有保证

我发现了一些接近我在这篇文章中的想法:http://javascript.info/tutorial/settimeout-setinterval

本质上,在排队的基础上操作的JavaScript计时器—您可以调用setTimeout(fn, 10),并且您的请求将在10ms后排队执行,但这并不意味着它将在该时间后执行,只是它将排队这样做。如果您测量期望和实际之间的差异(高于阈值,可能是100ms),您可以收集偏移数据来计算脚本运行的结果频率(或"时钟速度")。请参阅本文以更精确的方式对JS进行基准测试的示例

从第二篇文章中,我们看到您可以获得的最小超时是4ms:

使用setTimeout来测量图形性能是另一个坏主意。在浏览器中,setTimeout的时间间隔上限为4毫秒,所以你最多可以得到250帧/秒。从历史上看,浏览器有不同的最小间隔,所以你可能有一个非常不完整的绘制基准,显示浏览器a以250 FPS(4毫秒的最小间隔)运行,浏览器B以100 FPS(10毫秒的最小间隔)运行。显然A更快!不!很有可能B运行绘图代码的速度比A快,比如A花了3毫秒,B花了1毫秒。不影响FPS,因为绘制时间小于最小setTimeout间隔。如果浏览器是异步呈现的,那么一切就都完了。不要使用setTimeout,除非你知道你在做什么。