【发布时间】:2020-07-30 01:56:45
【问题描述】:
我知道 javascript 中的以下代码返回函数的执行时间:
(function(){
for(let i = 0; i < 1000; i++){
}
console.log(performance.now());
})()
但它返回了一个不稳定的结果,我可以达到稳定的执行时间吗? (对于函数或代码 sn-p)
这样的结果不稳定:
850672.7449999889
852057.6050000091
853179.7950000037
1043505.1950000052
返回这个不稳定值的原因是什么,达到静态结果是否合理?
【问题讨论】:
-
浏览器中同时发生了其他事情,计算机上正在运行其他进程。在具有事件/消息中断的多线程进程中,您永远不应期望一个线程中的任何一个函数具有固定的执行时间。你应该看看时间范围。根据程序逻辑,中位数或最大时间可能更重要。
-
@DaveS 说得对,或者直接回答您的问题。 1) 我能达到……稳定的执行时间吗? -- 几乎没有,即使您对本地系统上的所有活动有 100% 的完全控制权。系统管理员向导可能比我们任何人都更接近! 2)这个不稳定值返回的原因是什么? -- 您系统上的其他活动,浏览器中的其他活动和其他操作系统进程; 3)达到静态结果是否合理? ——不是真的,不。 sha1 的回答在这方面是相当合理的。取平均值。快乐!
-
@DaveS 谢谢哥们!现在考虑到这一点(我的意思是执行时间不可靠),测量执行时间的最佳方法是什么,它是否存在? (比如说我们的程序从系统中占用X时间)
-
没有一种简单的方法可以在现代 PC 上获得一次完美的时光,还有很多其他事情要做。@DavidConrad 下面的评论是有道理的。舍弃最高和最低,对其余的取平均值作为一个粗略的想法。
标签: javascript performance function time