这更像是一个普遍的问题。在记录相关功能时使用 LINE 和 FILE 是否有任何性能损失?我一直这样使用它们:
在c ++中
Logger::debug("Incoming msg from rs232,__LINE__, __FILE__);
并且我的程序运行速度非常慢..我只是想确认是否删除它们会给我带来任何显着的性能提升,因为从各地移除它们是一项艰巨的任务。
由于
答案 0 :(得分:9)
不,一点也不。它们是扩展为常量的宏。
__LINE__
将行号扩展为十进制整数常量,将__FILE__
扩展为C字符串常量。
答案 1 :(得分:8)
没有。它们由预处理器扩展,如果在这样的代码中使用:
printf("This is " __FILE__ ".\n");
然后编译器将连接字符串文字,并且不会对性能产生影响。
另一方面,如果他们被作为额外的论点传递:
printf("This is %s.\n", __FILE__);
然后可能会对性能产生影响,但影响与此类似:
printf("This is %s.\n", "an answer on Stack Overflow");