2013-05-29 22 views
0

這是更常見的問題。使用LINEFILE是否有與logging相關的功能?我一直在使用他們完全是這樣的:在C/C++中使用__LINE__和__FILE__的性能損失

在C++

Logger::debug("Incoming msg from rs232,__LINE__, __FILE__); 

和我的程序已經運行非常slow..i只是想確認是否刪除這些都會給我任何顯著的性能提升,因爲它是將他們從各地移走的一項重大任務。

感謝

+6

調試日誌本身可能是什麼讓你的程序變慢。不要在調試模式下測試性能。 – Elazar

+0

-1你認真嗎?你稱之爲*非常緩慢的概念並不是特別明確。使用演繹推理...如果您從調試日誌記錄中刪除了__LINE__和__FILE__宏(它們*不是函數,順便說一下),並比較了您的時序,那麼您將得到一個答案更快。 – Sebivor

回答

8

號他們是由預處理器擴展,並且如果代碼中使用這樣的:

printf("This is " __FILE__ ".\n"); 

那麼編譯器會連接這些字符串和不會有任何性能影響。

如果,另一方面,他們正在爲額外的參數傳遞這樣的:

printf("This is %s.\n", __FILE__); 

則可能是影響性能,但只爲這樣的事情同樣的影響:

printf("This is %s.\n", "an answer on Stack Overflow"); 
+1

基本上你沒有性能問題,因爲這些宏。不過,您可能會因爲登錄而出現性能問題。 – Torp

9

不,完全沒有。它們是擴展到一些常量的宏。

__LINE__作爲十進制整數常量擴展到行號,並將__FILE__擴展爲C字符串常量。

相關問題