首頁 > 後端開發 > C++ > C `ifstream` 總是比 `fscanf` 慢嗎?

C `ifstream` 總是比 `fscanf` 慢嗎?

Susan Sarandon
發布: 2024-11-12 11:15:02
原創
625 人瀏覽過

Is C   `ifstream` Always Slower Than `fscanf`?

提高IOStream 效能

學習C 語言的各種C 使用者喜歡繼續使用printf / scanf 系列函數,即使在使用C 語言進行編碼時也是如此,因為其易於存取的介面和本地化能力。然而,當將其與 C 的 ifstream 進行比較時,可能會出現效能問題。值得注意的是,據觀察,fscanf 的表現始終優於 ifstream。

IOStreams 最佳化技術

要增強IOStreams 效能,請考慮以下技術:

使用pubsetbuf() 進行緩衝

增加緩衝區大小可減少緩衝區大小可以減少HDD命中和系統調用,從而提高效能。透過使用 pubsetbuf() 存取 Streambuf 實作來設定緩衝區。

區域設定處理

由於字元轉換和複雜的系統調用,區域設定可能會影響效能。選擇預設的 C 語言環境,該語言環境針對機器之間的最小轉換和一致性進行了最佳化,以避免這種開銷。

與sync_with_stdio()同步

在我們的測試中,此參數沒有表現出顯著的性能改進.

基準測試和結果

我們使用簡單的測試程式進行的基準測試揭示了不同平台和編譯器之間的不同結果。結果顯示 IOStreams 的效能取決於實作。

以下是各種基準測試的結果:

g 4.7.2-2ubuntu1, -O3, Ubuntu 11.10 x86_64

    g 4.4.5,-O3,Ubuntu Linux 10.10 x86_64

      C 速度提高17%

    g i686-apple-darwin10-g -4.2.1 (GCC) 4.2.1、mac mini、4GB 內存

      C 速度慢111%

    clang 3.8.0-2ubuntu4、Kubuntu 16.04 Linux 4.8-rc3

    C 速度快66%C 速度快66%C 速度快66%結果強調了IOStreams 效能優化中實作品質的重要性。

    以上是C `ifstream` 總是比 `fscanf` 慢嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    來源:php.cn
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板