内联后调用方多大
按模型,调用方 8 条、函数体 3 条、内联 2 处,size_after 交回几?
内联模型:should_inline(体大小, 阈值)=不超阈值才内联;calls_saved=省下的调用次数;size_after(调用方, 函数体, 调用数)=每个调用点用函数体替换后的大小;worth_it(函数体, 调用数, 预算)=增长没超预算。
def should_inline(size, threshold):
"""函数体不超过阈值才值得内联。"""
return size <= threshold
def calls_saved(n_calls):
"""内联掉 n_calls 处调用,就省下这么多次调用开销。"""
return n_calls
def size_after(caller, callee, n_calls):
"""内联后调用方大小:每个调用点用函数体替换(去掉 1 条 call、加 callee 条)。"""
return caller + n_calls * (callee - 1)
def worth_it(callee, n_calls, budget):
"""代码增长没超过预算 budget 才划算。"""
return n_calls * (callee - 1) <= budget
print(size_after(8, 3, 2))
全部评论