相关疑难解决方法(0)

内联函数与预处理器宏

内联函数与预处理器宏有何不同?

c c++ macros inline

107
推荐指数
6
解决办法
8万
查看次数

内联功能v.C中的宏 - 什么是开销(内存/速度)?

我在Stack Overflow中搜索了类似函数的宏与内联函数的优缺点.

我发现了以下讨论: C中不同宏函数/内联方法的优缺点

......但它没有回答我的主要问题.

也就是说,在内存使用和执行速度方面,使用宏函数(带有变量,可能还有其他函数调用)和内联函数的开销是多少?

开销中是否存在编译器相关的差异?我同时拥有icc和gcc.

我模块化的代码片段是:

double AttractiveTerm = pow(SigmaSquared/RadialDistanceSquared,3);
double RepulsiveTerm = AttractiveTerm * AttractiveTerm;
EnergyContribution += 
   4 * Epsilon * (RepulsiveTerm - AttractiveTerm);
Run Code Online (Sandbox Code Playgroud)

我将其转换为内联函数/宏的原因是我可以将其放入ac文件中,然后有条件地编译其他类似但略有不同的函数/宏.

例如:

double AttractiveTerm = pow(SigmaSquared/RadialDistanceSquared,3);
double RepulsiveTerm = pow(SigmaSquared/RadialDistanceSquared,9);
EnergyContribution += 
   4 * Epsilon * (RepulsiveTerm - AttractiveTerm);
Run Code Online (Sandbox Code Playgroud)

(注意第二行的差异......)

这个函数是我的代码的核心功能,在我的程序中每步调用数千次,我的程序执行数百万步.因此,我希望尽可能减少开销,因此我浪费时间来担心内联的转换,将代码转换为宏.

根据之前的讨论,我已经意识到宏的其他优点/缺点(类型独立性和由此产生的错误)...但我最想知道的,目前不知道的是性能.

我知道你们中的一些C老兵会对我有一些很好的见解!

c macros optimization performance inline

33
推荐指数
3
解决办法
3万
查看次数

标签 统计

c ×2

inline ×2

macros ×2

c++ ×1

optimization ×1

performance ×1