這是更常見的問題。使用LINE和FILE是否有與logging相關的功能?我一直在使用他們完全是這樣的:在C/C++中使用__LINE__和__FILE__的性能損失
在C++Logger::debug("Incoming msg from rs232,__LINE__, __FILE__);
和我的程序已經運行非常slow..i只是想確認是否刪除這些都會給我任何顯著的性能提升,因爲它是將他們從各地移走的一項重大任務。
感謝
這是更常見的問題。使用LINE和FILE是否有與logging相關的功能?我一直在使用他們完全是這樣的:在C/C++中使用__LINE__和__FILE__的性能損失
在C++Logger::debug("Incoming msg from rs232,__LINE__, __FILE__);
和我的程序已經運行非常slow..i只是想確認是否刪除這些都會給我任何顯著的性能提升,因爲它是將他們從各地移走的一項重大任務。
感謝
號他們是由預處理器擴展,並且如果代碼中使用這樣的:
printf("This is " __FILE__ ".\n");
那麼編譯器會連接這些字符串和不會有任何性能影響。
如果,另一方面,他們正在爲額外的參數傳遞這樣的:
printf("This is %s.\n", __FILE__);
則可能是影響性能,但只爲這樣的事情同樣的影響:
printf("This is %s.\n", "an answer on Stack Overflow");
基本上你沒有性能問題,因爲這些宏。不過,您可能會因爲登錄而出現性能問題。 – Torp
不,完全沒有。它們是擴展到一些常量的宏。
__LINE__
作爲十進制整數常量擴展到行號,並將__FILE__
擴展爲C字符串常量。
調試日誌本身可能是什麼讓你的程序變慢。不要在調試模式下測試性能。 – Elazar
-1你認真嗎?你稱之爲*非常緩慢的概念並不是特別明確。使用演繹推理...如果您從調試日誌記錄中刪除了__LINE__和__FILE__宏(它們*不是函數,順便說一下),並比較了您的時序,那麼您將得到一個答案更快。 – Sebivor