如何优化 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)) 没有提供任何可观察到的性能优势。
测量
使用不同编译器和平台进行基准测试显示不同的结果:
这些结果表明 IOStream 性能有所提高取决于具体的实施实现。因此,不存在跨平台优化 IOStreams 的通用解决方案。
以上是C IOStream 性能实际上比 printf/scanf 慢吗?的详细内容。更多信息请关注PHP中文网其他相关文章!