C
Io 重定向與文件日誌記錄性能 c/c++
如果我們在執行程序時執行正常 printf 並將標準輸出重定向到文件(例如 ./a.out > log.txt 2>&1 )與使用 fprintf 並登錄到一個文件,從延遲的角度來看是否存在性能差異文件。
具體來說,當我執行程序時,我使用 ACE 日誌記錄並目前將 io 重定向到一個文件。從性能的角度來看,將記錄器與文件相關聯是否有益。
您應該知道“延遲”可能包括 stdio 系統為“高效”文件系統寫入緩衝足夠的輸出。有關
man 3 setbuf
更多資訊,請參閱。緩衝是基於每個的FILE *
,因此stderr
通常是無緩衝的,而stdout
通常是緩衝的。這就是為什麼根據您的範例,當它們都被定向到同一個文件時,輸出stderr
和輸出最終會出現亂序。stdout
如果您
FILE *
的程序打開了一個實例,除非您已經完成setbuf()
它,或者執行正常的“fflush()”呼叫,否則無法預測“延遲”。我最終對
fflush()
崩潰的程序進行了很多呼叫,因此 stdout 的輸出實際上在崩潰之前將其轉換為日誌文件。便宜,但很髒。