函数的第一次执行是否总是比第二次执行慢?

时间:2019-11-04 11:50:42

标签: javascript

我只是注意到,如果我具有完全相同的功能并衡量其性能,那么第一次执行总是比第二次执行慢。

我尝试了几次,结果总是一样。

const myF = () => console.log("hello");

console.time("1");
myF();
console.timeEnd("1");

console.time("2");
myF();
console.timeEnd("2");

首先,我认为第一次执行的结果以某种方式被缓存,因此在第二次执行中它的速度更快。但是我也尝试了仅略有不同的不同功能。但是,结果还是和以前一样:第一个执行的函数比第二个更快。

const myF = () => console.log("hello");
const myF2 = () => console.log("world");

console.time("1");
myF(); // 1 is slower than 2
console.timeEnd("1");

console.time("2");
myF2();
console.timeEnd("2");

在这里我首先执行第二个功能

const myF = () => console.log("hello");
const myF2 = () => console.log("world");

console.time("2");
myF2(); // 2 is slower than 1
console.timeEnd("2");

console.time("1");
myF();
console.timeEnd("1");

这是我使用console.time的方式。 console.timeEnd对吗?如果是这样,为什么第一次执行比第二次执行慢?我可能错过了一些愚蠢的事情。我无法想象完全相同的函数的性能取决于它执行的那一行。...

在Chrome 78.0上测试; Linux 19.04

1 个答案:

答案 0 :(得分:0)

由于第一次执行函数时,编译器将该函数解释为机器代码(函数的汇编指令),并将此CPU指令存储在内存中。当您第二次执行相同的函数时,编译器将直接执行解释后的机器代码,这就是第二次函数执行速度更快的原因。

相关问题