iOS同步对象性能对比(iOS锁性能对比)
来源:互联网 发布:爱钱进可靠吗 知乎 编辑:程序博客网 时间:2024/06/05 17:13
http://lijianfei.sinaapp.com/?p=655&utm_source=tuicool&utm_medium=referral
在iOS开发中,支持多种同步方法,我们从耗时角度出发,评估各种同步对象的性能。
- @synchronized
- NSLock
- NSCondition
- NSConditionLock
- NSRecursiveLock
- pthread_mutex_t
- OSSpinLock
- dispatch_barrier_async
示例代码如下:
一.模拟器/iOS7/XCode6下性能对比
日志情况:
总结对比
二.iPad Mini2/iOS7/XCode6下性能对比
总结
- 耗时方面:
- OSSpinlock耗时最少;
- pthread_mutex其次。
- NSLock/NSCondition/NSRecursiveLock 耗时接近,220ms上下居中。
- NSConditionLock最差,我们常用synchronized倒数第二。
- dispatch_barrier_async也许,性能并不像我们想象中的那么好.推测与线程同步调度开销有关。单独block耗时在1ms以下基本上可以忽略不计的。
- 在访问次数比较多的情况下,IMP访问耗时要比消息发送略小。 参看
NSLock
与NSLock + IMP
对比。 - 为什么不直接使用IMP而使用直接声明函数指针的方式? XCode6下IMP不能指定参数,报错如下
- 如何解决呢?修改LLVM预处理设置即可。详情见XCode6下Too many arguments to function call, expected 0, have 2解决办法
原因分析
1.synchronized
2.NSConditionLock
3.OSSpinLock
4.pthread_mutex
结论:
- 如果只是粗略的使用锁,不考虑性能问题可以使用synchronized。
- 如果对效率有较高的要求,还是采用OSSpinlock比较好。
- 因为Pthread的锁在也是用 OSSpinlock 实现的。OSSpinlock 的实现过程中,并没有进入系统kernel,使用OSSpinlock可以节省系统调用和上下文切换。
参考文章:
http://ksnowlv.github.io/blog/2014/09/07/ios-tong-bu-suo-xing-neng-dui-bi/
http://www.coneboy.com/?p=1433
0 0
- iOS同步对象性能对比(iOS锁性能对比)
- iOS同步对象性能对比(iOS锁性能对比)
- iOS同步对象性能对比(iOS锁性能对比)
- iOS同步对象性能对比(iOS锁性能对比)
- iOS同步对象性能对比
- iOS学习笔记之同步对象性能对比(iOS锁对比)
- Android与 IOS系统的性能对比
- iOS多线程安全的几种解决方案以及性能对比
- micro SD card 在 android上的性能对比,后面还有IOS的I/O性能对比
- Node.js 异步性能与同步性能对比
- boost pool性能对比
- FSDirectory NIOFSDirectory 性能对比
- 底层文件系统性能对比
- 主流GPU性能对比
- CPU 性能对比图
- web服务器性能对比
- c3p0 hikariCp 性能对比
- 负载均衡器性能对比
- mycncart使用教程 - 修改管理员操作权限
- HDU 1010 Tempter of the Bone
- SQL总结.1
- 神奇的_scala
- 源码探索系列15---那个AsyncTask里面的FutureTask
- iOS同步对象性能对比(iOS锁性能对比)
- nginx基于cookie粘滞做的负载均衡
- [每天程序猿] 如何成为顶级技术巨匠?
- tinyos学习笔记8--TestLinkLocal例程代码说明
- mysql user权限表
- 生产者消费者模式浅析
- mycncart如何开启短信验证接口功能
- 汉字编码问题(转)
- redis