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

DDD
發布: 2024-11-23 07:23:18
原創
848 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板