Javascript 在V8中,执行函数的确切数目变热之后?

Javascript 在V8中,执行函数的确切数目变热之后?,javascript,v8,Javascript,V8,我在学习V8的内部工作原理时,发现有一个JIT编译器,它使用内联缓存技术动态优化热函数。我只有两个问题,第一,只要一个接一个地重复执行几次,函数是否被视为热函数?其次,在V8中,重复执行函数的确切数量变得热门之后?V8开发者在这里。函数“hotness”并不仅仅取决于调用它的次数。相反,V8试图通过估计执行未优化版本的函数所花费的时间来预测优化给定函数的有用性。具体的启发式方法是如何工作的,考虑了哪些其他因素(例如,类型反馈的完整性/稳定性),以及触发优化编译时的阈值会随着时间的推移而变化 原因

我在学习V8的内部工作原理时,发现有一个JIT编译器,它使用内联缓存技术动态优化热函数。我只有两个问题,第一,只要一个接一个地重复执行几次,函数是否被视为热函数?其次,在V8中,重复执行函数的确切数量变得热门之后?

V8开发者在这里。函数“hotness”并不仅仅取决于调用它的次数。相反,V8试图通过估计执行未优化版本的函数所花费的时间来预测优化给定函数的有用性。具体的启发式方法是如何工作的,考虑了哪些其他因素(例如,类型反馈的完整性/稳定性),以及触发优化编译时的阈值会随着时间的推移而变化


原因是优化编译相当昂贵,所以您只希望在可能获得回报的情况下进行。(“可能”,因为它特别取决于函数在未来将做多少工作,而准确预测未来当然是不可能的,因此总是会涉及一些猜测和启发。)

当引擎确定现在停止执行并在继续之前运行优化编译器是值得的时,它会变得很热。此阈值是动态的,并且在任何时候都可能更改,例如,当编译器变得更好/更快时,越早运行它越有用。