代码review

我:我们有两台机,都是一样的 xeon E5620 2.4G 的CPU,但是,跑算Pi的程序,5000个迭代,一个机器跑48秒,另一个只需要32秒

coly:CPU核数一样吗?

我:一样的。不一样应该没关系,我这是单进程。

coly:内存速度不一样?

我:就一个算Pi,总共就占8MB内存,还没有CPU的L3 cache大呢

coly:要不这样,你写个死循环加法,我们看看两边的速度是不是一样

(公司的盒饭送来了,晚饭时间)

coly:你先吃,我来写吧....一个死循环我应该还是能写出来的....你要review我的代码哟~
我:....

(coly把代码写出来了

int main(void)
{
        int a=0;
        while ( a < 0) {
                a++;
        }


        return 0;
}


coly:为什么我运行瞬间就结束了?
我:应该是编译器把你的死循环优化掉了,因为a这个变量在整个main函数里都没有被其它地方使用
coly: 喔~~,我改改,在结尾加个printf把a打出来

(程序一运行还是瞬间结束)
陈同学:(看了看代码)是不是加法太快了,看不出来?咱们加几个嵌套循环
coly:好~

(程序还是瞬间结束)

coly:怪了....靠,a的值是0啊,根本进不了循环!
我,陈同学齐声:喔~~~

coly:你们两个!怎么review代码的!




后记:

死循环程序写出来了,两台机器CPU的计算速度确实有差异,原因最后由柯旻同学揭示:

跟华为2285机器的cpu 频率控制有关
CPU不开启cpuspeed就是1.6G的主频,需要

/sbin/modprobe acpi-cpufreq
echo ondemand |sudo tee /sys/devices/system/cpu/cpu13/cpufreq/scaling_governor

后,主频才上到真正的2.4G

相关文章

分类

1 Comments

老栋 said:

是啊,进不了循环。

狂笑

留言:

关于文章

This page contains a single entry by DongHao published on 01 16, 2012 5:42 PM.

ext4新特性bigalloc的简介 was the previous entry in this blog.

从“快照”到overlay filesystem is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.