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