【发布时间】:2018-08-29 15:52:28
【问题描述】:
在开发 C++ 程序时,默认采用 clang 或 gcc 内联指标,那么用户如何选择内联参数,例如内联方法的最大大小或容器大小,以优化他的程序?例如,程序员是否必须查看生成的可执行文件的大小?虚拟方法的数量?应如何采用内联指标?
【问题讨论】:
-
如今,在大多数情况下,最好让编译器完成其工作并避免人工干预,除非绝对必要(意味着您进行了分析并发现需要优化)。
-
"程序员是否必须查看生成的可执行文件的大小?"如果你不知道,那么很可能没有。当您针对资源稀缺的系统时,可执行文件的大小可能很重要
-
通常情况下,你可以给编译器适当的编译器标志,例如。 G。 GCC:
-O3(速度)或-Os(大小),可能还有-Ofast或-Og。 -
如果您有问题,不如努力profile您的应用程序。有可能(比您想象的要小)瓶颈将位于您之前甚至没有想到的某个完全不同的位置。然后优化这个特定的函数(甚至可能在汇编级别)。
-
@user463035818 从我现在的情况来看,内联只对小函数执行,如果程序大小不重要,为什么我们不内联大函数?我们是否总是相信编译器能找到正确的组合程序的大小和速度?
标签: c++ optimization inlining