為什麼在C 中從stdin 讀取行比在Python 中慢
儘管有預期,從標準輸入讀取輸入行的C 程式碼可以執行速度明顯慢於Python 對應項。這種差異源自於 C 中的預設值。
預設輸入流配置
預設情況下,C 輸入流 (cin) 與標準輸入/輸出 (stdio) 同步)。這種同步意味著 cin 嘗試避免任何輸入緩衝,從而導致它一次讀取一個字元。
為什麼緩衝很重要
通常,輸入流以較大的大小緩衝輸入區塊,減少資料擷取所需的系統呼叫數量。但是,基於 FILE* 的 stdio 和 iostream 的單獨實作和緩衝區在一起使用時可能會導致問題。
為了防止潛在的衝突,預設情況下流與 stdio 同步。 Cin 逐一讀取字符,帶來很大的開銷,尤其是在處理數百萬行時。
解決方案
要提高效能,請使用sync_with_stdio(false) 停用串流同步main 函數開頭的方法:
std::ios_base::sync_with_stdio(false);
通過此🎜>通過此更改,C流可以獨立緩衝,從而加快輸入速度
替代方法:fgets
另一種提高輸入速度的方法是使用fgets 函數代替getline:
char buffer[1024]; while (fgets(buffer, sizeof(buffer), stdin)) { // Process the line }
以上是為什麼 C 標準輸入讀取速度比 Python 慢,如何改進?的詳細內容。更多資訊請關注PHP中文網其他相關文章!