fopen vs stat的表现

Ale*_*all 3 c file-io fopen

我正在为嵌入式系统编写几个C程序,我们可以挤出的每一点性能都很重要.部分原因是访问日志文件.在确定文件是否存在时,使用open/fopen和stat之间是否有任何性能差异?我一直在使用stat,假设它只需要对文件系统进行快速检查,而fopen必须实际获得访问文件并在返回之前操作内部数据结构.这有什么好处吗?

tom*_*gic 6

stat可能更好,因为它不必为实际读取文件分配资源.您不必调用fclose以释放这些资源,也可以从最近检查过的文件的缓存中受益.

如果有疑问,请测试一下.计时使用每种方法检查1000个文件的大循环,以及存在且不存在的文件名的适当组合.

如果您对源代码statfopen,你应该能够通过它来阅读,并得到哪个将需要更多资源的想法.

  • 在我们的嵌入式设备上,stat 在检查文件存在方面的性能实际上比 fopen 好 3 倍,我有点惊讶。谢谢你的建议。 (2认同)