【问题标题】:Who to take the write numbers when it' came to function inlining in C++?当涉及到 C++ 中的函数内联时,谁来写数字?
【发布时间】:2018-08-29 15:52:28
【问题描述】:

在开发 C++ 程序时,默认采用 clang 或 gcc 内联指标,那么用户如何选择内联参数,例如内联方法的最大大小或容器大小,以优化他的程序?例如,程序员是否必须查看生成的可执行文件的大小?虚拟方法的数量?应如何采用内联指标?

【问题讨论】:

  • 如今,在大多数情况下,最好让编译器完成其工作并避免人工干预,除非绝对必要(意味着您进行了分析并发现需要优化)。
  • "程序员是否必须查看生成的可执行文件的大小?"如果你不知道,那么很可能没有。当您针对资源稀缺的系统时,可执行文件的大小可能很重要
  • 通常情况下,你可以给编译器适当的编译器标志,例如。 G。 GCC-O3(速度)或-Os(大小),可能还有-Ofast-Og
  • 如果您有问题,不如努力profile您的应用程序。有可能(比您想象的要小)瓶颈将位于您之前甚至没有想到的某个完全不同的位置。然后优化这个特定的函数(甚至可能在汇编级别)。
  • @user463035818 从我现在的情况来看,内联只对小函数执行,如果程序大小不重要,为什么我们不内联大函数?我们是否总是相信编译器能找到正确的组合程序的大小和速度?

标签: c++ optimization inlining


【解决方案1】:

如果您需要花时间进行微优化,请输出程序集并查看您的函数是否在您使用的上下文中内联。有在线tools 使用多个版本的 gcc 和 clang 执行此操作。经过几次实验,你就会掌握它的窍门。

【讨论】:

    猜你喜欢
    • 2017-01-05
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2015-09-08
    • 2021-05-13
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多