为什么linux 2.6.32中的程序比2.6.18慢?

时间:2014-06-13 14:38:12

标签: c linux x86 64-bit cpu

我写了一个程序,这很简单。

void do_test() {
    const char *s = "http://";
    int i = 0;
    for(; i<100000; ++i) {
        const char *p = s;
        while(*p != '/') {
            ++p;
        }
    }
}
int main() {
    int i = 0;
    for(; i<100; ++i) {
       do_test();
    }
    return 0;
}

运行此代码100次,将导致差异。我的64位服务器内核linux 2.6.32的成本为1.29s,但在内核2.6.18的32位服务器上只花费1.23s。

2 个答案:

答案 0 :(得分:2)

由于硬件不同,性能上的差异可能(并且很可能与内核无关)。

此外,在责备内核之前,我会想到编译器优化,CPU架构等......

答案 1 :(得分:1)

即使两台计算机具有相同的规格,硬件可能也不完全相同,处理器制造过程中的纳米级差异可能导致这种小的差异(~1%)