社区
C语言
帖子详情
宏转化函数 是否降低函数性能?
xtyjason
2009-04-27 12:44:00
宏转化函数 性能是会降低吗?
...全文
135
10
打赏
收藏
宏转化函数 是否降低函数性能?
宏转化函数 性能是会降低吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
猫已经找不回了
2009-04-27
打赏
举报
回复
会的。
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
打赏
举报
回复
宏在绝对多数情况的效率比函数高,但是我敢肯定的说这个不肯定!!不信的朋友,晚上回来举例。
安全散列算法SHA
包含两种代码风格,一种是多
宏
函数
操作(来自于老师);另一种多非
宏
函数
函数
操作(来自于我自己)。免费获取可联系:mailbox_krj@163.com
易语言-易语言5.32编写
宏
插件
易语言-易语言5.32编写
宏
插件
C语言
宏
定义、
宏
函数
、内置
宏
与常用
宏
前言: 在C语言中,变量类型、循环控制、基础语法等与其他高级语言基本无异;而C语言(C++)特有的两把双刃剑指针和
宏
定义/
宏
函数
使得C语言在底层开发中披荆斩棘、无所不能。这两个概念涉及范围比较广,其分支点也比较多,可谓星罗棋布,但这每颗星都足以照亮C语言因其开发周期、可维护性、可移植性等问题而显的黯淡的天空,使得这门语言灵活多变、操作犀利,令人难以揣摩却也深深着迷。 首先,C的第一把双刃剑:指针,...
宏
定义及相关用法
宏
定义及相关用法 欢迎各位补充 目录 一些成熟软件中常用的
宏
定义: 使用一些内置
宏
跟踪调试:
宏
定义防止使用时错误:
宏
与
函数
带副作用的
宏
参数 特殊符号:’#’、’##’ 1、一般用法 2、当
宏
参数是另一个
宏
的时候 __VA_ARGS__与##__VA_ARGS__ 一些成熟软件中常用的
宏
定义: 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define CO...
Excel任意
函数
曲线图绘制实战教程
要使用EVALUATE()
函数
,必须绕过常规公式输入方式,转而通过名称管理器(Name Manager)定义一个指向该
函数
的命名公式。这是由于EVALUATE()属于
宏
表
函数
,在现代Excel界面中无法直接在单元格内调用。其基本语法结构如下:=EVALUATE(引用包含表达式的单元格)例如,假设A2单元格存放的是字符串"2*3^2+5",我们希望将其计算结果输出到B2。此时需执行以下步骤:打开【公式】→【名称管理器】→【新建】;名称输入CalcResult;
C语言
70,036
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章