这个js代码几乎没有任何功能,但运行需要时间。不仅每次运行时间都不同。
<!DOCTYPE html>
<html>
<head><title>Measure Time</title></head>
<body>
<script>
var t0 = performance.now();
//Literally Nothing
var t1 = performance.now();
document.write((t1-t0)+" ms");
</script>
</body>
</html>
答案 0 :(得分:4)
运行需要时间,因为计算机中的所有内容都需要一些时间才能运行。
这可能包括浏览器解析您的脚本并将其作为代码运行(因为您以ASCII格式提供它)。这可能包括为变量分配空间,或者将函数调用添加到调用堆栈中。
Performance.now正在获取当前时间,如果我没有弄错,则需要系统调用。这意味着浏览器必须要求操作系统告诉它当前时间是什么。
然而,运行时变化的最大原因是由于调度。
浏览器可能不会同时一个接一个地运行这两行。浏览器可以运行一行,花一些时间做其他事情,然后返回并运行第二行。浏览器可能会尝试一个接一个地运行这两行,但操作系统会暂停执行浏览器尝试运行的任何代码,以便让其他程序执行此操作。
您的计算机似乎可以同时执行大量操作,但实际上,每个处理器核心一次只能运行一个程序。但是,通过快速切换程序,您的计算机似乎可以同时发生许多事情。
每个程序获得的时间长短取决于编写操作系统的人员确定的许多因素。因此,很难预测代码实时执行需要多长时间。