stat()是一个昂贵的系统调用吗?

Ram*_*a P 16 c linux

stat()系统调用真的很贵?我在某处读到这是一个昂贵的系统调用.是真的吗?如果有的话还有其他选择吗?

Dav*_*her 19

在一个典型的设置,stat(2),fstat(2),并lstat(2)是获得文件信息,唯一理智的方法.如果您发现性能问题,那么分析您的应用程序并查看会发生什么是值得的.

要配置文件,编译gcc -pg并运行可执行文件gprof(1).

您可能会切换到使用像Qt这样的更大的库,但这不太可能处理任何性能问题,并且stat(2)无论如何它们都可能会使用.

因此,无论价格是否昂贵,都没有合理的选择.

也就是说,就像Jim Mcnamara的评论一样,正是由于这些原因,它并不昂贵.由于没有其他选择,glibc和linux程序员已尽可能提高性能.

  • 另外,请考虑非常小心您运行多次的配置文件结果.您将缓存您触摸的每个文件,因此当您重新运行时,第二次运行会或多或少错误地在同一组文件上显示得更快. (2认同)
  • 有点像心脏病发作后的心脏直视手术......是的,它很贵,但有什么替代方案......? (2认同)

nik*_*el7 6

您始终可以使用strace您的可执行文件.没有必要重新编译.此功能允许您获取每个系统调用的实际执行时间.