最新消息:

代码review

未分类 admin 3083浏览 0评论
我:我们有两台机,都是一样的 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/cpu*/cpufreq/scaling_governor

转载请注明:爱开源 » 代码review

您必须 登录 才能发表评论!