gpt4 book ai didi

javascript - 使用 javascript performance.now() 计时

转载 作者:搜寻专家 更新时间:2023-11-01 04:41:07 27 4
gpt4 key购买 nike

我正在尝试以毫秒为单位计算函数的执行时间。我使用 performance.now() 来做到这一点。我能够在第一次运行时获得时间,但在第二次、第三次等运行中我得到 0 毫秒。这是一个例子:

function someFunction (){
var t0 = performance.now();
//Function calculations
var t1 = performance.now();
Console.log(t1 - t0);
}

我启动函数 onclick。它在我第一次启动页面时有效。它在第二次单击时停止工作。 t0 和 t1 得到相同的值,当我减去它们时我暂时得到 0。反正周围有吗?我不一定需要使用 performance.now()。我只想以毫秒为单位测量时间。

谢谢。

更新我认为这与速度有关。例如:

    <html>
<script type="text/javascript">
function someFunction (){
var t0 = performance.now();
console.log(t0);
//Function calculations
//Some loop
var counter = 0;
for (i = 0; i < 1000000; i++) {
counter ++;
}
var t1 = performance.now();
console.log(t1);
console.log(t1 - t0);
}

</script>

<button type="button" onclick="someFunction()">Click me</button>
</hmtl>

工作如我所料,但使用循环 for (i = 0; i < 1000; i++)它没有。

感谢您指点正确的方向。

最佳答案

你使用的实际代码会改变这里的结果,如果没有那个,为什么测试结果为 0 是一个推测问题。

也就是说,如今 JavaScript 中的微基准测试受制于 optimizations .例如:

function spiffy() {
/* long bit of code that
loops and loops and runs in
O(n!) time then finally */
return result;
}

漂亮!

假设 spiffy() 确定性地总是输出相同的结果。允许优化器有效地运行它:

function spiffy() { 
return 42;
}

哪个转

function someFunction() {
var t0 = performance.now();
var result = spiffy();
var t1 = performance.now();
console.log(t1 - t0);
}

变成无用的测试结果。

如果您的 JavaScript 应用程序存在真正的性能问题,我会在它运行时分析它 slower than molasses并分析代码中最繁忙的部分。我不是指微基准,而是 examining run-time , look at the algorithm你在那个部分使用,看看是否有更好的适合你的情况,最后,向其他人询问有关实际代码的问题,在相同的上下文中 它正在运行。

关于javascript - 使用 javascript performance.now() 计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29460040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com