首頁  >  文章  >  後端開發  >  C IOStream 效能實際上比 printf/scanf 慢嗎?

C IOStream 效能實際上比 printf/scanf 慢嗎?

Barbara Streisand
Barbara Streisand原創
2024-11-07 00:57:02837瀏覽

Is C   IOStream Performance Actually Slower Than printf/scanf?

如何最佳化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)) 沒有提供任何可觀察到的效能優勢。

測量

使用不同編譯器和平台進行基準測試顯示不同的結果:

  • SUSE 10p3 上的g 3.4. :C 速度減慢約20%
  • Ubuntu 11.10 上的g 4.7.2:C 快25%
  • Ubuntu Linux 10.10 上的g 4.4.5:C>Ubuntu Linux 10.10 上的g 4.4.5:C17% 快
  • macOS X 上的g:C 慢111%
  • Kubuntu 16.04 上的clang 3.8.0:C 很快 66%

這些結果顯示出快 效能有所影響提高取決於具體的實施實現。因此,不存在跨平台優化 IOStreams 的通用解決方案。

以上是C IOStream 效能實際上比 printf/scanf 慢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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