我相信我理解内联函数的基础:代替函数调用导致参数被放置在堆栈上并发生调用操作,函数的定义在编译时被复制到调用的位置,从而节省了调用开销在运行时.
所以我想知道:
scalac是否使用智能来内联某些函数(例如私有def)而没有注释的提示?
我如何判断何时提示scalac内联函数是一个好主意?
任何人都可以共享应该或不应该内联的函数或调用的示例吗?
oxb*_*kes 35
从来没有@inline任何实施可能合理改变的东西,哪些将成为图书馆的公共部分.
当我说"实施改变"时,我的意思是逻辑实际上可能会改变.例如:
object TradeComparator extends java.lang.Comparator[Trade] {
@inline def compare(t1 : Trade, t2 : Trade) Int = t1.time compare t2.time
}
Run Code Online (Sandbox Code Playgroud)
让我们说"自然比较"然后改为基于原子计数器.您可能会发现应用程序最终会有两个组件,每个组件都根据不同版本的比较代码构建和内联.
| 归档时间: |
|
| 查看次数: |
8198 次 |
| 最近记录: |