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

xtyjason 2009-04-27 12:44:00
宏转化函数 性能是会降低吗?
...全文
153 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
  • 打赏
  • 举报
回复
宏在绝对多数情况的效率比函数高,但是我敢肯定的说这个不肯定!!不信的朋友,晚上回来举例。
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 第 一 章 概述 1-1 简述计算机程序设计语言的发展阶段。 解: 自从计算机诞生以来,程序设计语言经历了从机器语言、汇编语言到高级语言的演变过程,C++语言作为一种面向对象的编程语言,也属于高级语言范畴。 1-2 面向对象的编程语言具备哪些特性? 解: 面向对象的编程语言与传统的编程语言有着本质的区别,其设计初衷是为了更直观地模拟现实世界中存在的事物及其相互关系。这类编程语言将客观事物视为具有属性和行为的对象,通过抽象方法提取出同一类对象的共同属性(静态特征)和行为(动态特征),从而构建类。借助类的继承与多态机制,能够便捷地实现代码复用,显著缩短软件开发周期,并确保软件风格的一致性。因此,面向对象的编程语言使得程序能够较为准确地反映问题域的本质,软件开发人员可以运用人类惯用的思维模式进行开发工作。C++语言是目前应用最为广泛的面向对象编程语言。 1-3 结构化程序设计方法是什么?这种方法有哪些优势和不足? 解: 结构化程序设计的核心思想是自顶向下、逐步求精;其程序结构按照功能划分为多个基本模块;各模块之间的关联尽可能简化,在功能上保持相对独立性;每个模块内部均由顺序、选择和循环三种基本结构构成;模块化实现的具体途径是利用子程序。结构化程序设计由于采用模块分解与功能抽象,自顶向下、分而治之的策略,从而有效地将一个较为复杂的程序系统设计任务分解成许多易于管理和处理的子任务,便于开发与维护。 尽管结构化程序设计方法具备诸多优点,但它本质上仍是一种面向过程的程序设计方法,将数据与处理数据的操作分离为相互独立的实体。当数据结构发生变化时,所有相关的处理过程都需要进行相应的调整,每一种...

70,038

社区成员

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

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