2012-03-14 29 views
1

打开/读/写是低级I/O功能,如果速度是我首先关心的问题,如何选择打开/读/写和fopen/fread/fwrite?什么时候应该使用打开/读/写和打开/读/写

+0

考虑到标准输入输出函数调用底层操作系统的功能是完成他们的工作......如果您认为您可以编写比C标准库更好的代码,请随时这样做。 – 2012-03-14 03:52:34

+0

@Greg Hewgill如果我想让它比fopen/fread/fwrite更快,实现我自己的I/O函数的任何提示? – 2012-03-14 03:55:16

+0

完全取决于您的应用程序的文件访问模式。如果你顺序阅读,你会想要一个大缓冲区。如果你正在寻求很多,你可能想要使用异步I/O。如果你想要另一个非常快速的替代方案,考虑内存映射文件 – 2012-03-14 04:01:36

回答

5

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

除了以上的区别。如果你刚刚文件描述符,你应该使用读,写等,而如果你有一个FILE *,你应该使用功能,如freadfwrite

+0

但是,在不同的条件下哪个更快? – 2012-03-14 03:53:00

+2

@MickeyShine:也许你应该创建一个基准来找出答案。如果性能是您的担忧,那么您将在稍后需要*这些基准测试工具。 – 2012-03-14 03:53:57

+0

@MickeyShine:您应该按照Greg的建议回答您的查询。通常,如果您正在进行大量的查找操作,则I/O缓冲会导致性能下降,而如果您正在读取或写入文件,I/O缓冲有助于提高性能。 – 2012-03-14 03:56:33

相关问题