代码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
相关文章
- fedora 9 小集 - 01 05, 2009
- 多线程调试 - 12 17, 2008
- fedora 9 试用 - 12 05, 2008
是啊,进不了循环。
狂笑