,欢迎您
您当前位置:网站首页 >> 互联网 >> 站长休闲 >> 2B程序员与牛B程序员比较

2B程序员与牛B程序员比较

2013-05-07 14:20:56 来源:CSDN 浏览:16
内容提要:CSDN上看到某文章写到一道编程题目:编程打印十个"hello",说某2B程序员的答案是重复写了十行print "hello",牛B程序员应该写出一个循环来,这样才是正确的。

    CSDN上看到某文章写到一道编程题目:编程打印十个"hello",说某2B程序员的答案是重复写了十行print "hello",牛B程序员应该写出一个循环来,这样才是正确的。

    不过想起来前一段时间做代码性能优化的时候,为了提高性能而把循环语句展开,也就是说本来for(int i=0;i<10:i++)printf("hello");这样的循环语句,展开来得到十个printf("hello"),以期得到高性能。

    事实确实如此,十条printf("hello");语句编译为汇编代码后几乎是十次printf函数调用,也就是10条指令序列;而循环语句编译为汇编代码后却会是一条循环条件判断,加一条printf函数调用,加一条循环条件变量修改,再加一条跳转,也就是4X10条指令序列。(大概如此,具体看汇编的结果)

    再者,在具有流水线处理的CPU上,执行十次printf函数调用可以在少于10个指令周期内完成,而由于循环语句编译后存在分支和条件判断,无法利用CPU的指令预取功能,所以代码的执行需要近乎4X10个指令周期。

看来,2B程序员写的代码笨拙,难看,但效率更高;牛B程序员写的代码好看,优美,但是效率低。

    所以看问题要根据实际情况来分析,别以为能写个循环就牛B了。 

发表评论
网名:
评论:
验证:
共有0人对本文发表评论查看所有评论(网友评论仅供表达个人看法,并不表明本站同意其观点或证实其描述)
关于我们 - 联系我们 - 广告合作 - 关于版权 - 网站地图 - 人才招聘 - 隐私条款 - 免责申明 - 信息举报 - RSS订阅 - 电子公告