美文网首页程序员
黑幕背后的性能优化之业务性能监控

黑幕背后的性能优化之业务性能监控

作者: iOS雯Ping | 来源:发表于2019-01-04 17:01 被阅读0次

我相信很多人都在说,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

相关文章

  • 黑幕背后的性能优化之业务性能监控

    我相信很多人都在说,iOS行业不好了,iOS现在行情越来越难了,失业的人比找工作的人还要多。失业即相当于转行,跳槽...

  • 性能监控

    性能监控是性能优化的第一步,至关重要,因为我们只有进行了性能监控才能知道性能的瓶颈所在,最后对症下药进行性能的优化...

  • 性能优化之性能监控

    一、基础概念 首先来探讨一下一个网页为什么会出现白屏: 我们来看下一个网页从白屏到内容展示都经历了哪些过程,如下图...

  • IOS的性能优化包括哪几点

    iOS性能优化总结 iOS性能优化总结。关于 iOS 性能优化梳理: 基本工具、业务优化、内存优化、卡顿优化、布局...

  • MS(4):Android之性能优化篇

    六、性能及优化 1、App优化之性能分析工具 Android App优化之性能分析工具 2、ListView优化 ...

  • react 框架性能优化

    react 框架性能优化 前端性能监控利器 1.Google Performance工具 2.react 性能查看...

  • Android优化文章精选

    Android性能优化典范 Android性能优化典范 - 第1季Android性能优化之渲染篇Android性能...

  • 收集_性能优化

    Android性能优化(一)之启动加速35%Android性能优化(二)之布局优化面面观Android性能优化(三...

  • 2020年底备战—从技术到面试合集

    技术区 性能优化 iOS性能优化 — 一、crash监控及防崩溃处理[https://www.jianshu.co...

  • MySQL相关文章索引(2)

    1.MySQL性能优化 对MySQL语句的性能分析与优化 Mysql 监控 Innodb 阻塞状况 MySQL索引...

网友评论

    本文标题:黑幕背后的性能优化之业务性能监控

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