代码优化的小知识点

1  for (int i=count-1; i!=0; i--)  比较好

要说效率,有一点可以让1和0不同:
for (int i=count-1; i!=0; i--)

for (int i=count; i!=1; i--)
可能会快一些,因为大多数的CPU指令都有直接判断是否为0的。


2 为什么大多数编程语言中的数组都是从0开始计数的,比从1开始计数有什么好处?


众所周知,C语言的数组是直接操作内存,那我们肯定得从内存的寻址开始说起:
以“以行为主序”的分配为例:设数组的基址为LOC(a c1 c2),每个数组元素占据l 个地址单元,那么aij 的物理地址可用一线性寻址函数计算:
LOC(aij)=LOC(a c1 c2)+( (i- c1) *( d2 - c2 + 1)+ (j- c2) )*l
推广到一般的三维数组:A[c1..d1] [c2..d2] [c3..d3],则aijk 的物理地址为:
LOC(i,j,k)=LOC(a c1 c2 c3)+( (i- c1) *( d2 - c2 + 1)* (d3- c3 + 1)+ (j- c2) *( d3- c3 + 1)+(k- c3))*l
显然,此处的c1 c2 c3 为0 会大大简化计算有木有啊!!越是多维数组效果越明显
这对于计算机寻址计算来说显然好处是大大的啊
这就是为什么最早C语言的数组起始都是0
至于什么其他的原因觉得美啊什么的都是后来人们YY的

posted @ 2013-04-24 17:48  唐僧吃肉  阅读(202)  评论(0编辑  收藏  举报