「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C ++ ioStreamのパフォーマンスは、printf/scanfよりも本当に遅いですか?

C ++ ioStreamのパフォーマンスは、printf/scanfよりも本当に遅いですか?

2025-04-13に投稿されました
ブラウズ:789

Is C   IOStream Performance Actually Slower Than printf/scanf?

c

cのioStreamパフォーマンスを最適化する方法。パフォーマンスの懸念は、この好みの主な理由としてしばしば引用されます。これは、

charバッファー[n]で行われます。 std :: ifstream file( "file.txt"); file.rdbuf() - > pubsetbuf(buffer、n);

locale handling

は、文字変換、フィルタリング、および動的発送のためにパフォーマンスオーバーヘッドを導入できます。これらの操作を無効にするデフォルトのCロケールにロケールを設定すると、パフォーマンスが向上する可能性があります:
char Buffer[N];
std::ifstream file("file.txt");
file.rdbuf()->pubsetbuf(Buffer, N);
std :: locale :: global(std :: locale( "c" "));

同期(std :: ios_base :: sync_with_stdio(false))は、観察可能なパフォーマンスの利点を提供しません。

g 4.7.2 on Ubuntu 11.10:c 25%速い

g 4.4.5 on Ubuntu Linux 10.10:C 17%faster
std::locale::global(std::locale("C"));

clang 3.8.0 on kubuntu 16.04より速く

これらの結果は、iOSTREAMパフォーマンスの改善が特定の実装の実装によって異なることを示しています。したがって、プラットフォーム間でiOSTREAMを最適化する普遍的なソリューションはありません。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3