瓜瓜派的瓜瓜
分类: C/C++
2012-01-09 17:00:42
读BrianW. Kernighan和Dennis M. Ritchie的英文版《C程序设计语言》,第18页有这么一句话"You couldinstead write nc = nc+1 but ++nc is more concise and often moreefficient." 为什么说"一般情况下++nc比nc=nc+1更高效"? 这让我回想起美国CSE学校计算机系乐团的那首"Coding in C"里有一句歌词"save some time with plus plus i" 为什么说"++i可以save some time"? 带着这个疑问,回想起以前学GNU/Linux下的汇编,看过将C程序反汇编分析程序效率的例子。决定自己也动手做个实验。 打开GNU小本,用emacs编写main.c和Makefile两个文件如下: 由上可知,单独地用++i和i=i+1的效率是一样的,都对应于同一汇编语句 addl $1, -8(%ebp) 我表错情了...... ++i一般比i=i+1高效应该是指 1. ++i比i=i+1少打几个字 2. 组合使用时,如 if (++num >= SAVED_LOG_LINES) ++end; 用++i的形式,表达紧凑(高效)很多 就当多一次小丑吧:) 参考资源 1. coding in c + 计算机系系列歌曲 2. Professional_Assembly_Language.pdf GNU/Linux汇编 |