每次调用函数时我都需要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
会更糟糕。