在C/C++中使用__LINE__和__FILE__的性能损失

Shr*_*han 0 c c++ performance

这更像是一个普遍的问题.在记录相关函数中使用LINEFILE是否有任何性能损失?我一直这样使用它们:

在c ++中

Logger::debug("Incoming msg from rs232,__LINE__, __FILE__);
Run Code Online (Sandbox Code Playgroud)

我的程序运行速度非常慢..我只是想确认是否删除它们会给我带来任何显着的性能提升,因为从各地移除它们是一项重大任务.

谢谢

Jes*_*ood 9

一点都不.它们是扩展为常量的宏.

__LINE__扩展为行号作为十进制整数常量和__FILE__C字符串常量.


ick*_*fay 8

不会.它们由预处理器扩展,如果在这样的代码中使用:

printf("This is " __FILE__ ".\n");
Run Code Online (Sandbox Code Playgroud)

然后编译器将连接字符串文字,不会对性能产生影响.

另一方面,如果它们被作为额外的参数传递:

printf("This is %s.\n", __FILE__);
Run Code Online (Sandbox Code Playgroud)

然后可能会产生性能影响,但影响与此类似:

printf("This is %s.\n", "an answer on Stack Overflow");
Run Code Online (Sandbox Code Playgroud)