首頁  >  文章  >  後端開發  >  為什麼 C 標準輸入讀取速度比 Python 慢,如何改進?

為什麼 C 標準輸入讀取速度比 Python 慢,如何改進?

DDD
DDD原創
2024-11-23 07:23:18866瀏覽

Why is C   Standard Input Reading Slower Than Python's, and How Can It Be Improved?

為什麼在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn