宏转化函数 是否降低函数性能?

xtyjason 2009-04-27 12:44:00
宏转化函数 性能是会降低吗?
...全文
117 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
会的。
theone11 2009-04-27
  • 打赏
  • 举报
回复
同一个功能,用宏来实现的时间效率肯定比用函数来实现好得多,毕竟宏是直接展开代码,而调用函数的成本就高得多了.
liliangbao 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zjl_1026_2001 的回复:]

宏是在预编译过程中做了一个代码的替换,而函数则是在运行过程中做入栈、保存数据、出栈之类的工作,会有额外的系统开销的。
所以自然是宏的效率高。
但是,因为宏是在预编译过程中的代码替换,如果你的宏定义的代码特别大,而且用到宏的地方又很多,就会使生成的执行文件很大,

两者如何取舍关键看实际情况了
[/Quote]
Up,但是一般是会的,因为宏的代码都不是很长~
jiyan1221 2009-04-27
  • 打赏
  • 举报
回复
個人認為,宏比較適合于短小的函數。適當的運用宏對程序效率的提高肯定是有幫助的。但是反過來降低效率也不是不可能。
pathuang68 2009-04-27
  • 打赏
  • 举报
回复
1. 将宏改写成inline函数,两者性能差不多。
2. 宏会有很多隐含的问题,尽量少使用,比如:
#define MAX(a, b) ((a > b) ? (a) : (b))
如果 a = 5; b = 0;
那么使用万MAX(a++, b)后,a=7。
Scott Meyers有一本书叫Effective C++,第一条就是告诫大家尽量少用宏。:)
fox000002 2009-04-27
  • 打赏
  • 举报
回复
看具体情况吧

如果代码完全一样,函数会多出栈入栈的操作,效率会降低

改成 inline 的话,可能和宏差不多
chenaiyuxue 2009-04-27
  • 打赏
  • 举报
回复
宏是牺牲空间效率来换取时间效率的
zhanghuayi_xiyou 2009-04-27
  • 打赏
  • 举报
回复
宏只是在预编译的时候进行代码替换,增加的是代码量。而函数则是在运行的时候使用系统资源。

对于比较短小的功能函数,使用宏可以提高程序的运行效率。
沙漠里的海豚 2009-04-27
  • 打赏
  • 举报
回复

宏是在预编译过程中做了一个代码的替换,而函数则是在运行过程中做入栈、保存数据、出栈之类的工作,会有额外的系统开销的。
所以自然是宏的效率高。
但是,因为宏是在预编译过程中的代码替换,如果你的宏定义的代码特别大,而且用到宏的地方又很多,就会使生成的执行文件很大,

两者如何取舍关键看实际情况了
fly_new 2009-04-27
  • 打赏
  • 举报
回复
宏在绝对多数情况的效率比函数高,但是我敢肯定的说这个不肯定!!不信的朋友,晚上回来举例。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧