【问题标题】:when should I use open/read/write and fopen/fread/write我什么时候应该使用 open/read/write 和 fopen/fread/write
【发布时间】:2012-03-14 03:48:23
【问题描述】:

open/read/write 是底层 I/O 函数,如果速度是我最关心的问题,如何在 open/read/write 和 fopen/fread/fwrite 之间进行选择?

【问题讨论】:

  • 考虑 stdio 函数调用底层操作系统函数来完成它们的工作......如果你认为你可以编写比 C 标准库更好的代码,请随意这样做。
  • @Greg Hewgill 是否有任何关于实现我自己的 I/O 功能的提示,如果我想让它比 fopen/fread/fwrite 更快?
  • 这完全取决于您的应用程序的文件访问模式。如果您按顺序阅读,则需要一个大缓冲区。如果您经常寻找,您可能想要使用异步 I/O。如果您想要另一个真正快速的替代方案,请考虑内存映射文件。
  • @greg Hewgill 谢谢,我想我要先做一个基准测试

标签: c linux io


【解决方案1】:

更高级别的函数也为您提供了易用性,fopen() 等函数为您提供了与open() 不同的内置 I/O 缓冲。 I/O 缓冲确保fopen()open() 快​​得多。

除了上面的区别如果你只有文件描述符,你应该使用读,写等,而如果你有FILE *,你应该使用freadfwrite等函数。

【讨论】:

  • 但是,不同条件下哪个更快?
  • @MickeyShine:也许您应该创建一个基准来找出答案。如果性能是您关心的问题,您稍后将需要这些基准测试工具。
  • @MickeyShine:您应该按照 Greg 的建议来回答您的查询,通常,如果您正在执行大量查找操作,I/O 缓冲性能会下降,而如果您正在读取或写入文件顺序 I/O 缓冲有助于提高性能。
  • @Als 感谢您的回答,您的意思是直接 I/O 函数(打开/读/写)更适合随机(大量查找)操作和缓冲 I/O(fopen/读/写)更适合顺序操作,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多