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

JavaScript:处理器速度和代码速度之间的关系是什么?,javascript,performance,benchmarking,Javascript,Performance,Benchmarking,我希望我的处理器越快,我的代码运行就越快 我可以用计算机将代码测量到毫秒精度 new Date.getTime() 两者之间有什么关联 我怎么能期望这与运行在3.2GHz的处理器有关呢 即使这是一个非常粗略的估计,有人能量化这种关系吗 // start_time run some simple code to be timed. // end_time 分配给JS脚本的[EDIT:CPU]时钟时间由许多因素决定,包括: 浏览器/版本 操作系统 当前功率状态 在Windows8的高级电

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

我可以用计算机将代码测量到毫秒精度

new Date.getTime()
两者之间有什么关联

我怎么能期望这与运行在3.2GHz的处理器有关呢

即使这是一个非常粗略的估计,有人能量化这种关系吗

// start_time

run some simple code to be timed.

// end_time

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

  • 浏览器/版本
  • 操作系统
  • 当前功率状态
在Windows8的高级电源选项菜单中可以看到这一点的演示。展开Internet Explorer节点,您会注意到下面的条目是针对
JavaScript定时器频率的。这正是您所认为的——一个控制JS时钟“滴答”频率的设置。一秒钟内的滴答声越多,JS引擎执行代码的频率就越高,执行的代码越多,所需的能量就越大

所以要回答你的问题: 是的,在非常普遍的意义上,处理器时钟速度可以决定特定JS的运行速度,但如果认为这是一种直接的相关性,那将是一个错误

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

我在这篇文章中发现了一些与我的想法相近的东西:

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

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

使用setTimeout测量图形性能是另一个坏主意。在浏览器中,setTimeout间隔被限制为4毫秒,因此您最多可以获得250 FPS。从历史上看,浏览器有不同的最小间隔,因此您可能有一个非常不稳定的绘图基准,显示浏览器a以250 FPS(4 ms min间隔)运行,浏览器B以100 FPS(10 ms min间隔)运行。显然,A更快!不很可能B运行绘图代码的速度比A快,比如A花了3毫秒,B花了1毫秒。这不会影响FPS,因为绘图时间小于最小设置超时间隔。如果浏览器以异步方式渲染,则所有赌注都将取消。除非你知道自己在做什么,否则不要使用setTimeout


如果你有一个更快的处理器,你的计算机的时钟会运行得更快吗?这个选项没有列出任何特定的频率,但我猜它会作为整体cpu时钟速度的某种因素运行。基本的测量单位可以是赫兹、每秒操作数(如果你只是看一个子集的话,也可以是触发器),%的时钟时间和总cpu时间,等等。这不是很容易量化的,因为涉及的因素太多了。。。简单的回答是“不管它要求多少,系统都能满足”很抱歉-我说它没有任何具体的数字-请参阅我的编辑关于
setTimeout
我看到只有两个选项-