单独使用
'%OptimizeFunctionOnNextCall()'
和'%OptimizeFunctionOnNextCall()'
搭配'%PrepareFunctionForOptimization()
'有什么区别?
function test() {
// some code here to optimize
}
%OptimizeFunctionOnNextCall(test);
test();
// ./d8 test.js --allow-natives-syntax --trace-turbo --trace-turbo-path turbo_out --trace-turbo-filter test
function test() {
// some code here to optimize
}
%PrepareFunctionForOptimization(test);
test();
%OptimizeFunctionOnNextCall(test);
test();
// ./d8 test.js --allow-natives-syntax --trace-turbo --trace-turbo-path turbo_out --trace-turbo-filter test
function test() {
// some code here to optimize
}
%OptimizeFunctionOnNextCall(test);
test(); // This call will trigger the optimization of the test function
如果函数已经处于可以优化的状态(例如,它已被调用足够多次来收集类型反馈),则此方法效果很好。
function test() {
// some code here to optimize
}
%PrepareFunctionForOptimization(test);
test(); // This call prepares the function and gathers feedback
%OptimizeFunctionOnNextCall(test);
test(); // This call will trigger the optimization of the test function
这种方法更加稳健,特别是当函数可能已去优化或尚未收集足够的类型反馈时。
%PrepareFunctionForOptimization
确保函数处于干净状态,准备在下次调用时进行优化。