ホームページ  >  記事  >  バックエンド開発  >  C IOStream のパフォーマンスは実際には printf/scanf よりも遅いですか?

C IOStream のパフォーマンスは実際には printf/scanf よりも遅いですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-07 00:57:02925ブラウズ

Is C   IOStream Performance Actually Slower Than printf/scanf?

C で IOStream のパフォーマンスを最適化する方法

C ユーザーは、後者のインターフェイスにもかかわらず、C IOStream よりも printf/scanf ファミリの関数を好むことがよくあります。利点。この設定の主な理由として、パフォーマンスの懸念がよく挙げられます。

バッファリング

基礎となる 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)) は観察可能なパフォーマンスを提供しません

測定

さまざまなコンパイラとプラットフォームを使用したベンチマークにより、さまざまな結果が明らかになりました:

  • g 3.4.2 (SUSE 10p3): ~20 C
  • g の % 減速 4.7.2 Ubuntu 11.10: C 25% 高速
  • g 4.4.5 Ubuntu Linux 10.10: C 17% 高速
  • g macOS X: C 111% 低速
  • clang 3.8 Kubuntu 16.04 の .0: C 66%より高速

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

以上がC IOStream のパフォーマンスは実際には printf/scanf よりも遅いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。