OptimizeFunctionOnNextCall()和PrepareFunctionForOptimization()+ OptimizeFunctionOnNextCall()

问题描述 投票:0回答:1

单独使用

'%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
javascript v8
1个回答
0
投票
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
确保函数处于干净状态,准备在下次调用时进行优化。

© www.soinside.com 2019 - 2024. All rights reserved.