2012-02-24 37 views
0

問候!!!很多printf的副作用?

我有幾個C AP中的CentOS Linux上運行的gcc版本編譯的4.4.4, 使用ssh連接到服務器, THREADLIB = POSIX putty.exe,因爲我的AP使用了大量的線程,我需要觀看了很多 的信息,使用了很多printf來爲屏幕查看速度和信息,而我不能專注於一個項目,我使用「printScr」鍵盤並將其粘貼到MS Paint, 那很容易使用 !!

雖然我喜歡for循環打印太多的信息,我覺得的 速度我的AP比較慢至今,如果我拿走那條printf在循環運行速度更快..

我的問題是:「屏幕輸出太多」真的會影響ap的速度嗎? 如果它是真的,除了減少printf,我還能做什麼來不會影響速度太高的 ?

感謝您的任何信息!

+0

是的,絕對。打印到屏幕上是一項昂貴的操作,特別是當您的終端在輸出時不會緩衝它! – 2012-02-24 05:21:57

回答

1

I/O是緩慢和終端趨向於一個非常緩慢的I/O設備。將輸出重定向到一個文件可能會有很大幫助。爲了說明考慮以下時間一百萬次迭代:

沒有的printf:0.008s
到/ dev/null的:0.182s
到文件:0.22s
到終端:2.513s

+0

謝謝,所以如果我運行我的ap像./ap.exe> /tmp/ap.txt,即使我沒有更改我的代碼,我仍然獲得更好的性能?因爲我跳過屏幕顯示和/tmp/ap.txt文件有緩衝區,我正確嗎? – barfatchen 2012-02-24 05:50:27

+0

這就是我期望的,但一如既往,測試它是肯定的。 – ABS 2012-02-24 05:51:37

0

記錄到屏幕將導致性能影響。儘量減少調用printf的次數,然後將輸出寫入文件。這應該有助於加速你的程序。

Link

0

印刷儘管最好的方法是減少你記錄的信息量(記住輸入/輸出操作總是被認爲是慢的),但是文件可能會讓你獲得一些速度(取決於你的系統配置)。在你的週期的每個循環中打印真的很重要嗎?你不能數,平均或以某種方式總結信息,然後在循環結束時打印該摘要?