我希望我的处理器越快,我的代码运行得越快。
我可以使用毫秒精度测量代码。
new Date.getTime()
两者之间有什么相关性?
我怎么能指望这与运行在 3.2 GHz 的处理器有关。
即使这是一个非常粗略的估计,任何人都可以量化这种关系吗?
// start_time
run some simple code to be timed.
// end_time
我希望我的处理器越快,我的代码运行得越快。
我可以使用毫秒精度测量代码。
new Date.getTime()
两者之间有什么相关性?
我怎么能指望这与运行在 3.2 GHz 的处理器有关。
即使这是一个非常粗略的估计,任何人都可以量化这种关系吗?
// start_time
run some simple code to be timed.
// end_time
分配给 JS 脚本的 [EDIT: CPU ] 时钟时间由许多因素决定,包括:
在 Windows 8 的高级电源选项菜单中可以看到一个演示。展开 Internet Explorer 节点,您会注意到下面的条目是针对JavaScript timer frequency
. 这正是你所想的——一个控制 JS 时钟“滴答”频率的设置。一秒钟内的滴答声越多,JS 引擎执行代码的频率就越高,执行的代码越多,消耗的功率就越多。
所以回答你的问题:是的,在一般意义上,处理器时钟速度可以确定特定 JS 的运行速度,但假设它是直接相关是错误的。
编辑(更多信息):我无法挖掘链接,但如果我找到它,我会在这里更新。使用setTimeout
or setInterval
,您可以传递给那些实际将被兑现的方法的最小时间单位是 100(ms)。可能有比这更高的频率,但 100 毫秒是保证的全部
我在这篇文章中发现了一些与我的想法相近的东西:http: //javascript.info/tutorial/settimeout-setinterval
本质上,在基于排队操作的 JavaScript 计时器中——您可以调用setTimeout(fn, 10)
,并且您的请求将在 10 毫秒后排队执行,但这并不意味着它将在该时间后执行,只是它已排队执行所以。如果您测量预期和实际之间的差异(超过阈值,可能是 100 毫秒),您可以收集偏移数据来计算脚本运行的结果频率(或“时钟速度”)。有关以更精确的方式对 JS 进行基准测试的示例,请参阅本文
从第二篇文章中,我们看到您可以获得的最小超时时间是 4 毫秒:
使用 setTimeout 来测量图形性能是另一个坏主意。setTimeout 间隔在浏览器中被限制为 4 毫秒,因此您最多可以得到 250 FPS。从历史上看,浏览器有不同的最小间隔,所以你可能有一个非常糟糕的琐碎绘制基准,显示浏览器 A 以 250 FPS(最小间隔 4 毫秒)运行,浏览器 B 以 100 FPS(最小间隔 10 毫秒)运行。显然A更快!不是!很可能 B 运行绘图代码的速度比 A 快,比如 A 用了 3 毫秒,B 用了 1 毫秒。不影响 FPS,因为绘制时间小于最小 setTimeout 间隔。如果浏览器异步渲染,所有的赌注都没有了。除非您知道自己在做什么,否则不要使用 setTimeout。