zoukankan      html  css  js  c++  java
  • 代码优化的小知识点

    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的

  • 相关阅读:
    React Native 架构演进
    React Native 架构一览
    React Native 在 Airbnb 的起起落落
    React Native简史
    图解云服务模型的演进
    伯克利研究员们眼中的Cloud Computing
    彻底理解 IaaS、PaaS、SaaS
    JS更随机的随机数
    JS自动化
    fingerprint2 计算浏览器指纹分析
  • 原文地址:https://www.cnblogs.com/catkins/p/5270632.html
Copyright © 2011-2022 走看看