我相信很多人都在说, iOS 行业不好了, iOS 现在行情越来越难了, 失业的人比找工作的人还要多. 失业即相当于转行, 跳槽即相当于降低自己的身价. 那么做 iOS 开发的你, 你是否在时刻准备着跳槽或者转行了.
关于 iOS 性能优化梳理:
基本工具, 业务优化, 内存优化, 卡顿优化, 布局优化, 电量优化, 安装包瘦身, 启动优化, 网络优化等
基本工具:
TODO: Instruments 高级技巧, 常见的优化技能
业务性能监控, 在人工的在业务的开始和结束处打点上报, 然后后台统计达到监控目的, 是性能优化里比较重要的一个维度. 具体来说就是测试方法操作执行的时间损耗, 可能是同步
也可能是异步的. 测试的方法大概有如下五种:
第一种: NSDate 精确度可能是微秒(μs)
- NSDate* tmpStartData = [NSDate date];
- //You code here...
- double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];
- NSLog(@"cost time = %f s", deltaTime);
第二种: clock_t 精确度可能是微秒(μs)
- clock_t start = clock();
- // dosomething
- clock_t end = clock();
- NSLog(@"时间损耗 %f s", (double)(end - start)/CLOCKS_PER_SEC);
第三种: CFAbsoluteTime 精确度可能是微秒(μs)
- CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
- //You code here...
- CFAbsoluteTime end = CFAbsoluteTimeGetCurrent();
- NSLog(@"cost time = %f s", end - start); //s
第四种: CFTimeInterval 精确度纳秒(ns)
- CFTimeInterval start = CACurrentMediaTime();
- // dosomething
- CFTimeInterval end = CACurrentMediaTime();
- NSLog(@"时间损耗 = %f s", end - start);
第五种: mach_absolute_time 精确度纳秒(ns)
- uint64_t start = mach_absolute_time ();
- // operation();
- uint64_t end = mach_absolute_time ();
- uint64_t elapsed = 1e-9 *(end - start);
以上五种方法, 实际可用的是最后两种, 这五种都有什么关系呢?
NSDate -> gettimeofday -> mach_absolute_time
也就是说最终的来源还是 mach_absolute_time, gettimeofday 加入的时间同步机制.
简单说下 NSDate ,CFAbsoluteTimeGetCurrent,CACurrentMediaTime 的区别
框架层:
NSDate 属于 Foundation
CFAbsoluteTimeGetCurrent() 属于 CoreFoundatio
CACurrentMediaTime() 属于 QuartzCore
本质区别:
NSDate 或 CFAbsoluteTimeGetCurrent() 返回的时钟时间将会会网络时间同步, 从时钟 偏移量的角度, mach_absolute_time() 和 CACurre[图片上传中...(image.PNG-c2fc24-1546591771268-0)]
ntMediaTime() 是基于内建时钟的, 能够更精确更原子化地测量, 并且不会因为外部时间变化而变化 (例如时区变化, 夏时制, 秒突变等), 但它和系统的 uptime 有关, 系统重启后 CACurrentMediaTime() 会被重置.
常见用法:
NSDate,CFAbsoluteTimeGetCurrent()常用于日常时间, 时间戳的表示, 与服务器之间的数据交互
其中 CFAbsoluteTimeGetCurrent() 相当于[[NSDate data] timeIntervalSinceReferenceDate];
CACurrentMediaTime() 常用于测试代码的效率
在严峻的 iOS 市场中竞争, 没有掌握和了解一些具有优势的技术性知识, 你怎么与别人进行 PK, 又怎么征服你的面试官. 做过三五年的也未必一定会涉足到里面的技术性知识. 在找工作中, 技术足了, 找不到工作也许你缺少的是一份总结和一份面试题去练习. 为大家总结一份名企面试资料和面试题:
小编给大家推荐一个 iOS 技术交流群: 691040931 群内提供数据结构与算法, 底层进阶, swift, 逆向, 底层面试题整合文档等免费资料!
喜欢晓雯就关注晓雯哟!! 晓雯微信: Pingwen20
来源: http://www.jianshu.com/p/4bd5259e4be0