首頁 >後端開發 >C++ >為什麼 C 的 cin 比 Python 的輸入慢很多,如何改進?

為什麼 C 的 cin 比 Python 的輸入慢很多,如何改進?

Barbara Streisand
Barbara Streisand原創
2025-01-04 08:04:34645瀏覽

Why is C  's `cin` Significantly Slower than Python's Input, and How Can It Be Improved?

為什麼從stdin 讀取行在C 中比Python 慢得多

在比較Python 和C 中的輸入讀取速度時,觀察到C 程式碼的執行速度慢了一個數量級。

cin 缺乏緩衝

這種差異是由默認行為的根本差異引起的。 C 中的 cin 預設與標準輸入/輸出 (stdio) 同步,導致它放棄輸入緩衝,導致一次讀取一個字符,這對於系統調用而言是一個昂貴的過程。

解決方案:停用同步

為了提高效能,可以透過在開頭新增以下行來停用cin 與stdio 的同步程式:

std::ios_base::sync_with_stdio(false);

這允許C 流獨立緩衝I/O,顯著提高讀取速度。

Straw poll 來說明差異:

Implementation Lines per second
Python (default) 3,571,428
cin (default/naive) 819,672
cin (no sync) 12,500,000
fgets 14,285,714
wc (unfair comparison) 54,644,808

此表顯示了 cin 同步停用時讀取速度的巨大差異。

以上是為什麼 C 的 cin 比 Python 的輸入慢很多,如何改進?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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