如何最佳化C 中的IOStream 效能
C 使用者通常喜歡printf/scanf 系列函數而不是C IOStream,儘管後者的接口優點。效能問題通常被認為是這種偏好的主要原因。
緩衝
擴大底層 Streambuf 的緩衝區大小可以透過減少 HDD 命中和系統顯著提高效能來電。這是透過以下方式完成的:
char Buffer[N]; std::ifstream file("file.txt"); file.rdbuf()->pubsetbuf(Buffer, N);
區域設定處理
區域設定可能會因為字元轉換、過濾和動態調度而引入效能開銷。將語言環境設定為預設的C 語言環境會停用這些操作,可以提高效能:
std::locale::global(std::locale("C"));
同步
與C stdio 同步(std::ios_base : :sync_with_stdio(false)) 沒有提供任何可觀察到的效能優勢。
測量
使用不同編譯器和平台進行基準測試顯示不同的結果:
這些結果顯示出快 效能有所影響提高取決於具體的實施實現。因此,不存在跨平台優化 IOStreams 的通用解決方案。
以上是C IOStream 效能實際上比 printf/scanf 慢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!