»
首页
|
手机数码
|
汽车资讯
|
游戏硬件
|
评测专题
|
手机壁纸
|
海淘值得买
|
度假
|
求职招聘
|
广告联系
» 您尚未登录:请
登录
|
注册
|
标签
|
帮助
|
小黑屋
|
TGFC Lifestyle
»
完全数码讨论区
» 【转载】iphone5S,64位CPU完全不用担心内存不够用
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
【转载】iphone5S,64位CPU完全不用担心内存不够用
nick2119
混世魔头
帖子
4888
精华
0
积分
13641
激骚
3153 度
爱车
11路
主机
pc
相机
眼睛
手机
各种
注册时间
2012-8-21
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2013-9-15 19:30
显示全部帖子
作为职业ios开发者,对iphone5s 的64位cpu性能也非常好奇, 对它的兼容性也不放心,因为如果原有的程序如果需要大量的修改才能为iphone5s优化,那么会是非常非常痛苦的事情,会给开发者带来沉重的负担,现在苹果已经发布了开发工具并支持64位程序的编译. 楼主第一时间下载并经过几天的研究, 颇有些意外. 这里打算用非常简单通俗的介绍来和大家分享一下64位cpu在iphone5s的表现预期.
在iphone5s发布会当天, 苹果为开发者推出了xcode5GM版,附带ios7 sdk和新的ios7 64 sdk,这个是前面5个beta版本没有的,通过64位sdk开发者可以在虚拟机环境下模拟iphone5s的64位cpu和M7的运行效果,测试你的app.
楼主打开一个今年新开发的项目,这个项目包含了3d战斗游戏,上网发微博,播放视频等常见的运行负荷,新的编译器不出所料的报了一堆错误, 因为新的ios7 sdk升级了, 很多语法需要改进. 经过一天的修改, 所有警告和错误均被消灭, 楼主长舒一口气, 基本上证明在代码阶段ios7的兼容性没有给我造成巨**烦. 接下来就是为arm64 cpu优化.首先看图片1<晕,怎么在贴子里插图片? 只能放在最后面??>
这幅图片中的arm64是之前所有开发工具都没有的, 以前只有armv7和7s,对应的是iphone4s和iphone5的A5和A6CPU, 意思是你所编译的这个程序,需要兼容哪些cpu.默认已经添加了arm64的支持, 当然你也可以去掉,那么你编译的程序将只能以32位的方式在iphone5s上运行. 楼主修改了程序使得定义和实例都符合苹果64位编程的要求.
OK,开始用虚拟机模拟iphone5和iphone5s的环境,分别测试程序的性能. 这里要说明下虚拟机的环境并不能完全代表实体iphone5s的运算性能,比如浮点和整数运算因为开发用的intel cpu性能大幅领先arm实体cpu,所以基础运行虚拟机会快很多. 内存的占用比较精确,无论虚拟机还是实体机都能准确的表达内存的占用情况. 3D运行效果则是实体机压倒性的领先,因为虚拟机下中3D加速无法用GPU来完成而是CPU虚拟的, 实体机借助强大的GPU比虚拟机快上十倍以上吧,目前无论是ios还是android都还内有办法完美解决3D虚拟机效率低下的问题. 但是今天要探究的是5s和5在64和32位的表现差异, 所以大家都在公平的虚拟机环境下,性能的表现也是有可比性的.
我要测试的这个程序已经在AppStore上发布的,大家搜索陈乔恩就能下载,看下里边的功能就知道复杂程序了, 基本上是个机器负担中等的App. 首先让两个虚拟机都运行这个程序, 啥都不做, 只让程序启动并打开停留在第一个画面1分钟左右, 注意两幅图片顶部有iphone retina 4-inch 64-bit的为虚拟iphone5s, 没有64的为iphone5. 楼主神奇的发现为64位优化后的程序在iphone5s上内存占用为8.1MB而在iphone5上为9.9MB. 这个结果大跌眼镜,没有说错,5s在程序待机情况下居然占用更小的内存, 看来新的苹果编译器还是不吭爹的,具体原因后面再分析. 再说CPU占用, 双方都差不多, 5s的在3%-5%的区间, 5在5%-7%的区间, 5s略有优势而且平稳很多,不会有跳突的情况. 看来待机状态下5s胜出了. 说道内存这里有个题外话, 大家一直在讨论5s的内存是1G还是2G, 以我的开发经验来看,除非是渲染很复杂的3D程序在ipad retina的高分辨率下运行,大家才需要超过512的内存,实际上iPhone设备上开发者只要对程序用心优化过解决了所有泄露问题(这个太专业不讨论), 程序本身内存占用很少超过100MB. 但是如果把程序移植到Android的时候, 由于往往要加上吸费功能至少后台植入隐藏广告或者公开的广告浏览(这个是Android开发的潜规则),优化也是一笔带过, 100MB的内存占用至少跳到300MB.所以安卓系统2G内存是必须的! 在IOS为什么不能添加吸费和其他流氓功能呢? 不是我不想啊,呵呵.
测试完待机, 要测试满负荷运行了, 楼主选中一个需要上网同步大量图片和数据的场景, 因为这种同步或者说火力全开的下载是所有App最常见的功能了, 通常的步骤是 App发出一个网络连接请求, IOS接到这个请求开始通过wifi或者3G去发送这个请求, 如果请求被目标服务器响应, 那么执行下载或者上传, 楼主的程序会有一个将下载的数据缓存到本地存储器以便下次不再需要消耗流量的功能, 这个过程也是需要消耗大量资源的读写过程. 我们看下这个过程5s的arm64的表现:
大家注意途中Memory的图标标是内存占用,启动上网同步功能以后, 内存占用从原来的10以内调涨到50+MB,iphone5s调涨到55.3MB, 而iphone5跳到51.3MB, 这下正常了,因为大量的文字和图片数据在64位环境下存储, 64位的机器理论上就要占用更多的内存,所以在满负荷运行数据交互的状态下, 5s要比5额外增加8%左右的内存开销, 当然这个结果是指楼主的这个App,但是楼主认为还是很据代表行的场景. 然后再说CPU, iphone5S的CPU在发起网络同步的那1-2秒内跳涨到30%,然后回落到原来的4%左右, iphone5的CPU也是1-2秒调涨到50%然后回落到8%左右, 看来无论是5还是5s,CPU性能是严重过剩的,用来同时运行10个楼主这样的程序也是小菜一碟吧. 这个回合内存占用5要比5s领先,CPU效率还是5S继续领先5.
楼主还进行了内存leak,文件读写效率,JSON解析效率等64位的效果测试, 由于过程比较专业,有机会和有兴趣的同行讨论.所有测试的结论如下:
1,所有原生的SDK功能, 如使用自带的UI界面等,iPhone5s都比iphone5占用更少的内存和更少的CPU占用, 用户自动以的类和存储5s基本会更多的消耗5-10%的内存,而CPU占用会比5少一些. 这也解释了为啥待机情况下5s内存比5少,因为待机情况下只调用的基本的UI控件. 2,基本上现有的APP,iphone5的性能已经完全够用, 而且iphone4s也能运行ios7并且完美运行99.9%的App,因为包括楼主在内的所有的ios开发者都希望自己的app被更多人使用,所以会呕心沥血的去为老设备优化,除非是实在需要新硬件的一些功能, 否则不会放弃老设备.3,买新机器不推荐4s和4了,至于5s还是5c,运行APP的角度上看,那10%-20%的差异实在没必要纠结. 因为现在的开发者都是以1136X640的4寸屏幕为最佳表现形式来设计App的, 然后看下3.5寸的效果调整下, 最后移植到Android给一个800X480的基准界面,其他分辨率拉伸. 所以Android屏幕再大就算是1080P的,也只不过是800X480的App拉伸下, 想要开发者去做1080P的新UI要准备那么多图片, 不是大公司做项目, 基本不现实. Android不流氓开发者赚不到一毛钱,这个是让人最心寒的.
首次发帖啰嗦了这么多, 请见谅,如果问题,请回帖一起讨论, 有空再把做一个多重循环的压力测试,那个等5s的机器到手以后在实体机上运行再发出来.
//我是分割线
很多吧友关心5s是1G还是2G的内存, 这个问题再讨论下,
1,如果在ipad3,4,5上, 屏幕分辨率是2048x1536,这个分辨率运行32位色的大量图片渲染和3D模型, 那么内存轻松跳到500MB以上, 加上IOS7本身会占用100-200MB, 2G的内存是完全需要的.
2,如果在iphone5s的1136X640这个分辨率下, 在无抗锯齿的技术面试前, 所有开发者不会让内存占用达到200MB,基本会控制100-150,因为会考虑到老机型的用户,要赚他们的钱就不能把内存需求做的太大. 所以1G内存在2015年以前是完全可以运行AppStore里的所有App的, 不需要苹果去控制,开发者会按照市场需求去调整.
所以终端用户无需关心内存,这个是程序员的工作.
UID
221786
帖子
4888
精华
0
积分
13641
交易积分
0
阅读权限
40
在线时间
7826 小时
注册时间
2012-8-21
最后登录
2022-2-10
查看详细资料
TOP
nick2119
混世魔头
帖子
4888
精华
0
积分
13641
激骚
3153 度
爱车
11路
主机
pc
相机
眼睛
手机
各种
注册时间
2012-8-21
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2013-9-15 19:32
显示全部帖子
ipad 比较呛..................
UID
221786
帖子
4888
精华
0
积分
13641
交易积分
0
阅读权限
40
在线时间
7826 小时
注册时间
2012-8-21
最后登录
2022-2-10
查看详细资料
TOP
控制面板首页
密码修改
积分交易
积分记录
公众用户组
基本概况
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计