美文网首页
苹果工程师的牛逼之处

苹果工程师的牛逼之处

作者: 巧克力的qiao | 来源:发表于2019-03-13 18:34 被阅读0次

关于iPhone的CPU处理器有32位和64位,从iPhone5s开始苹果就开始使用64位的处理器了,关于32位和64位有什么区别呢?
首先我们要知道32位和64位代表什么,它指的是CPU的数据吞吐量,比如32位的CPU是有32根数据线,64位的则有64根数据线,而一根数据线可以读取一位信号(0或1),32位的CPU一次能处理4个字节的数据,64位的则可以处理8个字节的数据,从数据处理上速度上明显64位的要更快。
在我学习Runtime原理时,看到源代码有一处非常有意思的算法。
假如有这样一个需求,当我传入一个整数时,返回的结果必须是8的倍数,比如我传入12,返回的是16;传入的18,则返回的是24.。。。。

普通程序员小华的想法是:

设传入的参数为x,则(x+7)/8 * 8即为8的整数倍。转换为代码即为

int wordAlign(int x){
    return (x+7) / 8 * 8;
}
基础较好的程序员小明的想法是:

设传入的参数为x,则通过右移3位再左移3位即可得到8的整数倍,而且这样写速率也会更快

int wordAlign(int x){
    return (x+7) >> 3 << 3;
}

在此解释一下小明的操作:
假如我们传入wordAlign的参数为12,则12+7=19,用二进制表示就是0001 0011,右移3位的话变成0000 0010,然后再左移3位,则为0001 0000,即十进制的16

苹果工程师的写法:
Snip20190313_1.png

之所以说苹果工程师牛逼,是因为他的封装思想,他使用一个方法就可以同时满足32位和64位的CPU,假如是64位机器,则 (x+7) & ~7,这里我们传入的还是12,计算过程和结果如下图:

Snip20190313_2.png
结果仍是16,程序员小明的写法虽然和苹果工程师的写法在CPU运行速度是一样的,但显然苹果工程师的写法更加灵活,这一点是值得我们学习的地方,这也是我觉得苹果工程师的牛逼之处。。

相关文章

  • 苹果工程师的牛逼之处

    关于iPhone的CPU处理器有32位和64位,从iPhone5s开始苹果就开始使用64位的处理器了,关于32位和...

  • 随笔笔记

    技术不值钱。穷人学技术,富人学思维。这是常识。很多人老说工程师多牛逼,技术达人多牛逼。他们牛逼归牛逼。他们想赚钱,...

  • Fresco 牛逼之处

    Fresco 出身名门,功能强大,应该是目前来说最为牛逼的图片加载框架。内存管理:图片解压后,Bitmap会占据大...

  • 手机的牛逼之处

    手机手机真好玩, 啥都能买卖。 游戏游戏真入迷, 一天不玩浑身难受。 微信真有意思, 各种聊(撩)。 (我终于不用...

  • centos6安装nginx

    nginx的牛逼之处就不用多说了,反正一个字:牛逼! 先安装编译工具 yum -y install gcc gcc...

  • 大佬博客

    很牛逼的iOS工程师经验分享http://yulingtianxia.com AFNetworking底层源码解析...

  • 想要在互联网上挣钱,那么是选择服务高端人士还是低端人士?

    今天给大家分析的话题是,选择服务于平民还是服务于中高端人士的项目。苹果公司的牛逼之处其实在于他的服务对象定位于中高...

  • [ionic5+react] 2. Ionic React Ho

    Ionic React Hooks 例子 Hooks的牛逼之处,在于从访问Capacitor APIs和设置清楚减...

  • 我想和你聊聊写出「春风十里不如你」的那个冯唐

    每个牛逼的人,都要有个笃定的核,这样在宇宙间才不易被风吹散。 能说出这句话的人,指定是有牛逼之处的。很多现世流行的...

  • 区块链技术的牛逼之处

    区块链这个词虽不是新词,但绝对会成为 2018 年最火的词之一。从正月初二“3点钟无眠区块链”刷爆朋友圈之后,关于...

网友评论

      本文标题:苹果工程师的牛逼之处

      本文链接:https://www.haomeiwen.com/subject/rhegpqtx.html