我希望我的处理器越快,我的代码运行得越快。
我可以使用。
测量代码到毫秒级的精度。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运行有多快,但假设它是一个直接的相关性是错误的。
编辑(更多信息):我不能挖掘链接,但我会更新这里,如果我找到它。使用setTimeout
或setInterval
,您可以传递给这些方法的最小时间单位是100(ms)。有可能有比这更高的频率,但100ms是所有保证
我发现了一些接近我在这篇文章中的想法:http://javascript.info/tutorial/settimeout-setinterval
本质上,在排队的基础上操作的JavaScript计时器—您可以调用setTimeout(fn, 10)
,并且您的请求将在10ms后排队执行,但这并不意味着它将在该时间后执行,只是它将排队这样做。如果您测量期望和实际之间的差异(高于阈值,可能是100ms),您可以收集偏移数据来计算脚本运行的结果频率(或"时钟速度")。请参阅本文以更精确的方式对JS进行基准测试的示例
使用setTimeout来测量图形性能是另一个坏主意。在浏览器中,setTimeout的时间间隔上限为4毫秒,所以你最多可以得到250帧/秒。从历史上看,浏览器有不同的最小间隔,所以你可能有一个非常不完整的绘制基准,显示浏览器a以250 FPS(4毫秒的最小间隔)运行,浏览器B以100 FPS(10毫秒的最小间隔)运行。显然A更快!不!很有可能B运行绘图代码的速度比A快,比如A花了3毫秒,B花了1毫秒。不影响FPS,因为绘制时间小于最小setTimeout间隔。如果浏览器是异步呈现的,那么一切就都完了。不要使用setTimeout,除非你知道你在做什么。