javascript执行时间会有所不同

javascript执行时间会有所不同,javascript,Javascript,我试图找出捕获语句执行时间的最佳方法。例如,js stmt所用的时间是多少,例如if(txt='abc')。如果我使用console.time('test')/console.endTime('test')对来计算时间,或者使用简单的js代码(如下所示)来计算每次执行代码时控制台输出的变化时间 控制台上有时出现1位数、2位数到3位数的差异,以毫秒为单位,即有时出现1毫秒、60毫秒,有时出现800毫秒,顺序不一致。我甚至试着只运行一次&关闭浏览器&再次运行它,这样其他GC&变量就不会出现在图片中,

我试图找出捕获语句执行时间的最佳方法。例如,js stmt所用的时间是多少,例如if(txt='abc')。如果我使用console.time('test')/console.endTime('test')对来计算时间,或者使用简单的js代码(如下所示)来计算每次执行代码时控制台输出的变化时间

控制台上有时出现1位数、2位数到3位数的差异,以毫秒为单位,即有时出现1毫秒、60毫秒,有时出现800毫秒,顺序不一致。我甚至试着只运行一次&关闭浏览器&再次运行它,这样其他GC&变量就不会出现在图片中,影响时间,但结果是一样的。很少有ms是不稳定的,但如此巨大的差异需要很多时间才能弄清楚。那么,解释器执行时间的最佳和一致的方法是什么呢。我们怎样才能找到最好的尺度来证明哪种stmt在以某种方式编写或最好使用时性能更好

var start = (new Date).getMilliseconds();
if(txt =='abc'){};
var diff = (new Date).getMilliseconds() - start;
console.log(diff);

*所有测试均在FF中进行。还有不同的方法,如GetMillicles、getTime和console.endTime,它们一个接一个地使用*

Erm。。您使用两个非常不同的函数来检索当前时间戳

Date.prototype.getMilliseconds()
返回另一个(短于)数字

Date.prototype.getTime()

因此,一般来说,这不是一个好主意,而且很可能是你出现问题的原因。如果您想在代码中进行度量,您应该始终使用
.getTime()
或者更好的方法是使用
Date.now()
。两者都返回一个完整的时间戳编号。

这里的要点是,在大多数情况下,执行此指令的时间远小于0毫秒,因此我不明白为什么会出现这些差异。如果我在我的机器上运行:

for (x = 0; x < 100; x++) {                       
    var start = (new Date).getMilliseconds();
    if(txt =='abc'){};
    var diff = (new Date).getMilliseconds() - start;
    print(diff);
}

您可能会从单个if语句中找到一些帮助,因为它需要不可测量的时间。这取决于调度程序是否停止执行,以及在继续之前是否会进行一些其他计算(UI线程、垃圾收集等)。请使用以下工具。我认为讨论的重点是内存泄漏,但我在测试时关闭浏览器并重新运行,以避免内存泄漏,因此,这不会成为妨碍时间计算的问题让我知道你是否找到了一种一致、可靠的方法来对各种JS引擎进行基准测试。。。你会是第一个解决问题的人不要紧每次运行或关闭浏览器时都要尝试这两种方法测试结果变化很大,甚至没有遵循任何模式这很重要。仅仅因为有了mixin这两种方法,它就永远无法正常工作。在mixin出现的地方,人们一个接一个地尝试了它们picture@user593029:但是,使用
Date.now()或
new Date().getTime()时,我无法重新创建您的问题。它总是0或1毫秒。我想你从我的代码中搞错了(有输入错误)。我已经将它从getTime修改为GetMiscells。如果使用getTime,每次都会得到0毫秒,因此请尝试GetMillimes以毫秒为单位获取值
0
0
0
0
...