首頁 >後端開發 >C++ >為什麼 C `stdin` 的讀取速度比 Python 慢很多?

為什麼 C `stdin` 的讀取速度比 Python 慢很多?

Linda Hamilton
Linda Hamilton原創
2025-01-04 17:11:41235瀏覽

Why is C   `stdin` Reading So Much Slower Than Python's?

了解C 中Stdin 讀取與Python 相比的緩慢性能

在本文中,我們深入研究了在C 中從標準輸入(stdin) 讀取行的原因執行速度明顯慢於其對應的Python。

比較以下C 與Python 時碼:

C :

getline(cin, input_line);

Phon:

for line in sys.stdin:

>

令人驚訝的結果出現,Python 優於C一個數量級。這種差異可以歸因於 C 中不同的預設值。

預設情況下,C 中的 cin 流與標準 I/O 系統(stdio)同步,這導致它避免輸入緩衝。這意味著 cin 將逐個字元讀取輸入,而不是使用較大的區塊,從而導致大量昂貴的系統呼叫。

要解決此限制,您可以透過將以下語句新增至main 的開頭來停用此同步函數:
std::ios_base::sync_with_stdio(false);

透過此修改,cin 將被允許獨立緩衝其輸入,從而顯著提高性能。

此外,您可以使用 fgets 函數,它提供了一種更有效率、更直接的方式來讀取輸入行,而不會產生同步開銷。

總結:

C 中的預設同步設定導致更多的系統呼叫用於緩衝區管理,使其比 Python 讀取 stdin 輸入慢。為了提高效能,建議停用此同步或使用 fgets 函數。

以上是為什麼 C `stdin` 的讀取速度比 Python 慢很多?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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