在本文中,我們深入研究了在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中文網其他相關文章!