Ban*_*ant 7 c++ compiler-construction
我想知道是否有人知道C++编译器通常用来决定是否在编译时内联函数的逻辑(假设已经请求了内联).
这类事物是公共知识吗?
Mat*_* M. 6
我在另一个问题上给出了更全面的答案.
基本上编译器有基于成本分析的heurstics,引用自己(这是否意味着我会老死?)
如果你考虑内联及其后果,你会意识到: 你避免函数调用(所有寄存器保存/帧调整) 你向优化器暴露了更多的上下文(死存储,死代码,常见的子表达式elimintation ......) 以复制代码为代价(膨胀指令缓存和可执行文件大小等)
如果你考虑内联及其后果,你会意识到:
当然,还有部分内联,其中只有部分功能是内联的,通常是一个领先的if后卫foo(T* t) { if (!t) { return; } <many many things> }.
if
foo(T* t) { if (!t) { return; } <many many things> }
归档时间:
14 年,3 月 前
查看次数:
603 次
最近记录: