interface

什么是内联
内联是一个基本的编译器优化,它用被调用函数的主体替换函数调用。以消除调用开销,但更重要的是启用了其他编译器优化。这是在编译过程中自动执行的一类基本优化之一。它对于我们程序性能的提升主要有两方面



消除了函数调用本身的开销



允许编译器更有效地应用其他优化策略(例如常量折叠,公共子表达式消除,循环不变代码移动和更好的寄存器分配)
https://mp.weixin.qq.com/s/1nqpVzitGdVVvHIuk8iAeQ

内联做了什么
首先,减少了相关函数的调用,将 max 的内容嵌入调用方减少了处理器执行指令的数量,消除了调用分支。



由于 r=max(-1,i) , i是从 0 开始的,所以 i>-1 ,那么 max 函数的 a>b 分支永远不会发生。编译器可以把这部分代码直接内联至调用方,优化后的代码如下。


Category golang