【发布时间】:2012-08-24 15:08:31
【问题描述】:
我正在尝试找出捕获语句执行时间的最佳方法。比如 js stmt 比如 if(txt =='abc') 所用的时间是多少。如果我使用 console.time('test')/console.endTime('test') 对来计算或使用简单的 js 代码(如下所示)来计算每次执行代码时控制台输出都会变化的时间。
有时在控制台上看到的差异有时是 1 位、2 位到 3 位(以毫秒为单位),即有时 1 毫秒、60 毫秒和有时 800 毫秒,顺序也不一致。我什至尝试只运行一次并关闭浏览器并再次运行它,这样其他 GC 和变量就不会出现妨碍时间,但结果是相同的。几毫秒是不可理解的,但如此巨大的差异需要花费很多时间。那么究竟什么是让解释器执行时间的最佳且一致的方法。我们如何找到最好的标准来证明哪个 stmt 以某种方式编写或最好使用时性能更好
var start = (new Date).getMilliseconds();
if(txt =='abc'){};
var diff = (new Date).getMilliseconds() - start;
console.log(diff);
*所有测试都在FF中进行。还有不同的方法,例如 getMilliseconds、getTime 和 console.endTime 一个接一个 *
【问题讨论】:
-
您可能会从*.com/questions/2140716/…获得一些帮助
-
单个 if 语句将需要不可估量的时间。这取决于调度程序是否停止执行以及在继续之前是否会发生一些其他计算(UI 线程、垃圾收集等)......
-
使用jsperf之类的工具。
-
我认为讨论的重点是内存泄漏,但我在测试时通过关闭浏览器并重新运行它来避免这种情况,因此这不会是阻碍时间计算的问题
-
如果你找到了一种一致、可靠的方法来对各种 JS 引擎进行基准测试,请告诉我......你会是第一个解决它的人
标签: javascript