scanf() 在 C 表現中能否超越 iostream?
scanf() 提供比 C 中 cin 更快的輸入處理的概念已經引發程式設計師之間的爭論。本文深入研究了這些方法之間的性能比較,檢查了證據並提供了詳細的解釋。
效能測試
為了評估效能差異,一個簡單的程式是建立從標準輸入中讀取數字清單並對它們執行異或運算。 cin 和scanf() 皆在單獨的實作中使用:
#include <iostream> int main() { int parity = 0; int x; while (std::cin >> x) parity ^= x; std::cout << parity << std::endl; return 0; }
#include <stdio.h> int main() { int parity = 0; int x; while (1 == scanf("%d", &x)) parity ^= x; printf("%d\n", parity); return 0; }scan🎜>scan版本:
結果
scanf 版本:6.4 秒
最佳化注意事項最佳化注意事項
#include <iostream> int main() { int parity = 0; int x; std::ios::sync_with_stdio(false); while (std::cin >> x) parity ^= x; std::cout << parity << std::endl; return 0; }
最佳化注意事項
更改編譯器最佳化設定影響最小停用iostream 同步後:
cin 有同步版本:21.9 秒scanf 版本:6.8 秒cin 無同步版本:5.5 秒cin 無同步版本:5.5 秒cin 無同步版本:5.5 秒cin 無同步版本:5.5 秒 結論證據表明,對於C 中的原始輸入處理, scanf() 確實比cin 更快。但是,如果停用 iostream 的同步,iostream 將成為最佳選擇,其效能優於 scanf() 和最佳化的 cin 版本。 因此,雖然 scanf() 在特定場景下可能更快,但 iostream 提供了更好的同步控制以及更廣泛的功能。當速度至關重要時,建議停用 iostream 同步。以上是scanf() 在 C 輸入速度方面總是優於 iostream 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!