iOS 性能优化之业务性能监控
2016-05-08 13:31
1151 查看
业务性能监控, 在人工的在业务的开始和结束处打点上报,然后后台统计达到监控目的,
是性能优化里比较重要的一个维度。具体来说就是测试方法操作执行的时间损耗,可能是同步
也可能是异步的。测试的方法大概有如下五种:
第一种: NSDate 精确度可能是微秒(μs)
第二种:clock_t 精确度可能是微秒(μs)
第三种:CFAbsoluteTime 精确度可能是微秒(μs)
第四种:CFTimeInterval 精确度纳秒(ns)
第五种:mach_absolute_time 精确度纳秒(ns)
以上五种方法,实际可用的是最后两种,这五种都有什么关系呢?
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/
是性能优化里比较重要的一个维度。具体来说就是测试方法操作执行的时间损耗,可能是同步
也可能是异步的。测试的方法大概有如下五种:
第一种: 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 加入的时间同步机制。
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 代理传值(逆传)
- iOS之tableView基本用法
- iOS开发中常用的几个插件
- ios基础知识--03
- Vesions ignore & ld: library not found for -l问题总结
- ios基础知识--02
- iOS开发之多XIB之间相互关联
- ios基础知识--01
- 【iOS】NSDate分类,获得中国农历
- iOS开发之多storyboard相互关联
- iOS本地数据存取,这里就够了
- IOS9新特性慢慢整理
- iOS后台持续播放音乐
- iOS学习笔记77-ios开发,javascript直接调用oc代码而非通过改变url回调方式
- iOS Runloop详解
- iOS图片的自动适配(通过类别实现)
- IOS开发学习-基础环境搭建-1
- iOS三种多线程编程的技术介绍
- iOS开发多线程篇—多线程的的相关概念(1)
- iOS多线程篇:NSThread