我只是注意到,如果我具有完全相同的功能并衡量其性能,那么第一次执行总是比第二次执行慢。
我尝试了几次,结果总是一样。
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
答案 0 :(得分:0)
由于第一次执行函数时,编译器将该函数解释为机器代码(函数的汇编指令),并将此CPU指令存储在内存中。当您第二次执行相同的函数时,编译器将直接执行解释后的机器代码,这就是第二次函数执行速度更快的原因。