为什么sysconf()在多次调用时这么慢

时间:2017-01-29 00:52:10

标签: c unix

每次调用函数时我都需要PAGESIZE值,看起来像函数静态变量中的缓存系统调用sysconf(_SC_PAGESIZE)要比每次调用它快得多。

手册页说:

  

从这些函数获得的值是系统配置常量。它们在过程的生命周期中不会改变。

那么,如果值没有改变,为什么连续调用sysconf会这么慢?

以下是我用来测试的代码:

#include <unistd.h>
long a()
{
  return sysconf(_SC_PAGESIZE);
}
long b()
{
  static long n;
  if (!n)
    n = sysconf(_SC_PAGESIZE);
  return n;
}
int main()
{
  for (int i = 800000000; i > 0; --i)
    a();
  return 0;
}

结果是:a() 4,8s vs b()的1,7s。 -O2会更糟糕。

0 个答案:

没有答案