【发布时间】:2016-09-28 11:51:46
【问题描述】:
我相信预处理器在编译之前将宏扩展为代码中的副本文本,而编译器会在每个函数调用中写入已编译函数定义的副本。因此,在这两种情况下,我们都避免了常规函数调用的开销,但在这种情况下,内联函数或 MACRO 哪个更快且开销更少?
【问题讨论】:
-
你能告诉我预处理代码中两者的区别吗?
-
示例我有 MAX (x,y) ( x>y ? x:y) .... int (int x, inty){ return x>y ? x:y;}
-
更快?你的意思是开始工作?
-
鉴于一个简单的宏可能需要长达 48 小时才能正常工作,因为宏会生成 SO“我的宏无法正常工作”问答,因此内联代码的速度要快 10 的许多次方。跨度>
-
在大多数情况下,您需要获得超过 500 毫秒才能使时间可以忽略不计。通过使用内联函数(可能是纳秒,也可能是微秒)节省的时间被等待 I/O 或操作系统换出您的程序(并运行另一个任务)所浪费。宁愿把时间花在正确性和稳健性上。大多数用户讨厌经常崩溃的快速程序。 顺便说一句,500 毫秒或 1/2 秒是击键之间的快速时间。
标签: c++ c performance function macros