iOS 性能优化之业务性能监控
业务性能监控, 在人工的在业务的开始和结束处打点上报,然后后台统计达到监控目的,
是性能优化里比较重要的一个维度。具体来说就是测试方法操作执行的时间损耗,可能是同步
也可能是异步的。测试的方法大概有如下五种:
第一种: 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- *(end - start);
以上五种方法,实际可用的是最后两种,这五种都有什么关系呢?
NSDate -> gettimeofday -> mach_absolute_time
也就是说最终的来源还是 mach_absolute_time, gettimeofday 加入的时间同步机制。
CSDN:http://blog.csdn.net/skymingst/article/details/41892445
mach_absolute_time 详解
http://southpeak.github.io/blog/2014/09/23/xing-neng-yu-shi-jian/
clock_t 是不可靠的
http://www.cnblogs.com/chenyadong/archive/2011/12/03/2274783.html
附录:
mach_absolute_time 比较严格些的时间检测方法见示例代码,中间参考了官方QA样例
特点:
1. 增加了Block形式支持 --不推荐使用 T_T
2. 支持单元测试标题输出
3. 支持同步、异步测试
4. 纳秒级精确度,默认是毫秒输出,精确度微秒
https://github.com/skyming/iOS-Performance-Optimization
首发:
http://skyming.me/2016/05/08/iOS-Performance-Optimization-Time-md/
iOS 性能优化之业务性能监控的更多相关文章
- 性能优化——Web前端性能优化
核心知识点: 1.排查网站性能瓶颈的手法:分析各个环节的日志,找出异常部分 2.Web前端:网站业务逻辑之前的部分(浏览器.图片服务.CDN) 3.优化手段 1)浏览器优化 (1)减少http请求 a ...
- Android App性能优化笔记之一:性能优化是什么及为什么?
By Long Luo 周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...
- 微擎开启性能优化里面的性能优化memcache内存优化及数据库读写分离
http://www.mitusky.com/forum.php?mod=viewthread&tid=3135 [微擎 安装使用] 微擎开启性能优化里面的性能优化memcache内存优化及数 ...
- web性能优化-网络传输性能优化
浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...
- Android app 性能优化的思考--性能卡顿不好的原因在哪?
说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...
- react第八单元(什么是纯函数-组件的性能优化-pureComponent-组件性能优化的原理)
课程目标 理解纯函数 熟练掌握组件性能优化的几种技巧 pureComponent和Component的区别 #知识点 一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数 ...
- Linux性能优化之内存性能统计信息
关于内存的概念及其原理在任何一本介绍操作系统的书本中都可以查阅到. 理论放一遍,在Linux操作系统中如何查看系统内存使用情况呢?看看内存统计信息有哪些维度. 一.内存使用量 详细使用方法,man f ...
- iOS应用千万级架构:性能优化与卡顿监控
CPU和GPU 在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器) 对象的创建和销毁.对象属性的调整.布局计算.文本的计算和排版 ...
- JavaScript性能优化:度量、监控与可视化1
HTTP事务所需要的步骤: 接下来,浏览器与远程Web服务器通过TCP三次握手协商来建立一个TCP/IP连接,类似对讲机的Over(完毕) Roger(明白) TCP/IP模型 TCP即传输控制协议( ...
随机推荐
- Java Web项目--显示一个静态页面
我们可以在Eclipse中新建一个Dynamic Web Project,然后在项目的WebContent目录下新建一个Html文件page1.html,其内容如下: <!DOCTYPE htm ...
- Netty 服务端创建
参考:http://blog.csdn.net/suifeng3051/article/details/28861883?utm_source=tuicool&utm_medium=refer ...
- 英语知识(与字面意思 相反的) Corner office
Corner office 角落办公室是一种身份 角落办公室,即处于公司最佳位置的高级办公室,通常指总裁或总经理办公室.喻某人在公司或单位里的最高职务或在社会上与众不同的身份地位. 这里的角落是指方形 ...
- HUD2647 Reward_反向建图拓扑排序
HDU2647 Reward 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意:老板要发奖金了,有n个人,给你m对数,类似a b,这样的一对 ...
- local unversioned, incoming add upon update问题
当update的时候遇到如下问题 svn status D C ~/workspace/test/a.c > local unversioned, incoming add upon updat ...
- Java实现断点续传
原理: 断点续传的关键是断点,所以在制定传输协议的时候要设计好,如上图,我自定义了一个交互协议,每次下载请求都会带上下载的起始点,这样就可以支持从断点下载了,其实HTTP里的断点续传也是这个原理,在H ...
- vue下给title配置图标.ico
在根目录下放入要作为浏览网站时看到的网页title里的图标.如 32*32 后缀为.ico的图 然后再项目中build文件夹中的,webpack.dev.conf.js文件加入一句代码,加入完重启即可 ...
- Python 面向对象进阶(二)
1. 垃圾回收 小整数对象池 Python对小整数的定义是 [-5, 257),这些整数对象是提前建立好的; 在一个Python程序中,所有位于这个范围内的整数,使用的都是同一个对象; 单个字符共用对 ...
- Linux系统内核参数优化
Linux服务器内核参数优化 cat >> /etc/sysctl.conf << EOF # kernel optimization net.ipv4.tcp_fin_tim ...
- 如何删除Docker中的镜像相关
1.正常情况下 1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: ...