使长函数内联
Making a long function inline
本文关键字:函数 更新时间:2023-10-16
假设我有一个10行的函数。如果我添加内联关键字,假设有50%的几率编译器会使它内联。
如果我有一个2行函数,它可能有90%的机会被内联。
我可以将10行函数的代码分成5个函数,使其内联的机会更好吗?
编译器没有内联它可能是有原因的,可能是需要注意的。此外,对于较长的函数,函数调用开销变得不那么重要,因此内联它们可能不那么重要(如果这是您唯一的原因)。
将函数分成5个小函数只会使你的代码一团糟,并且可能会混淆编译器并最终导致它没有内联任何东西。我不建议那样做。
取决于你的c++编译器,你可以强制它内联函数。Visual c++有__forceinline
属性,以及如何处理内联以及在项目设置中使用它的频率的设置。正如Tony提到的,GCC的等效版本是__attribute__((always_inline))
。
您也可以使用一些预处理器技巧来内联代码本身,但我通常不建议这样做。
如果它使代码更具可读性,那就去做吧。如果不是,相信编译器,不要把你的代码弄乱,因为它可能会有帮助。编译器比你想象的要聪明得多,而且通常比你更清楚内联什么时候有用——什么时候没用,或者更糟的是,它会破坏东西。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗