学习 C 语言的各种 C 用户更喜欢继续使用 printf / scanf 系列函数,即使在使用 C 语言进行编码时也是如此,因为其易于访问的接口和本地化能力。然而,当将其与 C 的 ifstream 进行比较时,可能会出现性能问题。值得注意的是,据观察,fscanf 的性能始终优于 ifstream。
要增强 IOStreams 性能,请考虑以下技术:
增加缓冲区大小可以减少 HDD 命中和系统调用,从而提高性能。通过使用 pubsetbuf() 访问 Streambuf 实现来设置缓冲区。
由于字符转换和复杂的系统调用,区域设置可能会影响性能。选择默认的 C 语言环境,该语言环境针对机器之间的最小转换和一致性进行了优化,以避免这种开销。
在我们的测试中,此参数没有表现出显着的性能改进.
我们使用简单的测试程序进行的基准测试揭示了不同平台和编译器之间的不同结果。结果表明 IOStreams 的性能取决于实现。
以下是各种基准测试的结果:
g 4.7.2-2ubuntu1, -O3, Ubuntu 11.10 x86_64
g 4.4.5,-O3,Ubuntu Linux 10.10 x86_64
g i686-apple-darwin10-g -4.2.1 (GCC) 4.2.1、mac mini、4GB 内存
clang 3.8.0-2ubuntu4、Kubuntu 16.04 Linux 4.8-rc3
这些结果强调了 IOStreams 性能优化中实施质量的重要性。
以上是C `ifstream` 总是比 `fscanf` 慢吗?的详细内容。更多信息请关注PHP中文网其他相关文章!