
性能
bravegogo
知行合一,积学养气
展开
-
微信iOS卡顿监控系统
原创 2015-09-10 guoling WeMobileDev引子微信 iOS 团队在值班的时候,时不时会收到这样的卡顿反馈:“用户A 刚才碰到从后台切换前台卡了一下,最近偶尔会遇到几次”、“用户B 反馈点对话框卡了五六秒”、“现网有用户反馈切换 tab 很卡”。这些反馈有几个特点,导致跟进困难:不易重现。可能是特定用户的手机上才转载 2016-03-05 22:03:57 · 1369 阅读 · 0 评论 -
iOS runloop(转)
转载自:http://www.jianshu.com/p/613916eea37fiOS runloop 写这篇文章开始之前,我都不知道runloop是什么东西,如果从字面的意思翻译应该是一直循环的跑,怀疑可能和死锁有关系,可是死锁具体是怎么回事,我只是记得有这个说法,也发现了一个自己不懂的知识。初识runloop 我在网上看了一下@sun转载 2017-01-06 11:42:33 · 249 阅读 · 0 评论 -
NSLog效率低下的原因及尝试lldb断点打印Log
我是前言打Log是我们debug时最简单朴素的方法,NSLog对于objc开发就像printf对于c一样重要。但在使用NSLog打印大量Log,尤其是在游戏开发时(如每一帧都打印数据),NSLog会明显的拖慢程序的运行速度(游戏帧速严重下滑)。本文探究了一下NSLog如此之慢的原因,并尝试使用lldb断点调试器替代NSLog进行debug log。小测试测试下分别使用NSLog转载 2016-12-29 14:36:20 · 390 阅读 · 0 评论 -
深入理解Tagged Pointer
转:http://www.infoq.com/cn/articles/deep-understanding-of-tagged-pointer前言在2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于64位程序,引入Tagged Pointe转载 2017-01-10 16:55:49 · 305 阅读 · 0 评论 -
sqlite 优化 之 ANALYZE 与 VACUUM 命令
数据清理: 和PostgreSQL中的VACUUM命令相比,他们的功能以及实现方式非常相似,不同的是PostgreSQL提供了更细的粒度,而SQLite只能将该命令作用于数据库,无法再精确到数据库中指定的数据表或者索引,然而这一点恰恰是PostgreSQL可以做到的。 当某个数据库中的一个或多个数据表存在大量的插入、更新和删除等操作时,将会有大量的磁盘空间被已删除的数据所占原创 2017-01-10 18:16:39 · 4457 阅读 · 0 评论 -
LinkMap分析
原文: https://sanwen8.cn/p/5942YDZ.html近来我们一直在做 ipa 包大小的缩减,在删除了无用图片,缩减项目中图片的体积,取得了较大的效果。但是成果背后的问题也接踵而至,删除完了图片,压缩完了图片大小之后,我们应该怎么来减少 ipa包大小呢?从哪里去减小、减小什么、怎么减小呢?带着这样的问题,我们先来了解一下 ipa转载 2017-04-23 17:47:21 · 6809 阅读 · 0 评论 -
ios 整型 位数
32位sizeof(NSInteger)=4sizeof(long long) = 864位sizeof(NSInteger)=8sizeof(long long) = 8原创 2017-08-25 13:17:18 · 748 阅读 · 0 评论 -
printStackTrace
- (void)printStackTrace:(NSException *)e//要写入log文件的信息{ NSString *stack = [[e userInfo] objectForKey:NSStackTraceKey]; NSMutableArray *args = [NSMutableArray arrayWithCapacity:20]; if (sta转载 2016-06-01 16:04:10 · 671 阅读 · 0 评论 -
获取任意线程调用栈的那些事
原文: https://bestswifter.com/callstack/BSBacktraceLogger 是一个轻量级的框架,可以获取任意线程的调用栈,开源在我的 GitHub,建议下载下来结合本文阅读。我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调用栈,但是它输出的是当前线程的调用栈。在利用 Runloop 检测卡顿时,子线程检测转载 2017-08-31 10:42:14 · 990 阅读 · 0 评论 -
iOS 全局并发控制
转载:https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/当我用 concurrent queue 来执行大量绘制任务时,偶尔会遇到这种问题: 大量的任务提交到后台队列时,某些任务会因为某些原因(此处是 CGFont 锁)被锁住导致线程休眠,或者被阻塞,concurrent queue 随后会创建新的线程...转载 2018-07-09 16:44:20 · 462 阅读 · 0 评论 -
UIWebView缓存清理
UIWebView缓存清理的方式https://stackoverflow.com/questions/2523435/how-to-clear-uiwebview-cacheif (lastReq){ [[NSURLCache sharedURLCache] removeCachedResponseForRequest:lastReq]; [[NSURLCache sharedU...原创 2018-07-10 19:09:29 · 335 阅读 · 0 评论 -
Xcode里调试 自定义 signal的信号 回调函数的执行
signal信号: signal是一种软中断信号,提供异步事件处理机制。signal是进程间相互传递信息的一种粗糙方法,使用场景: 进程终止相关;终端交互; 编程错误或硬件错误相关,系统遇到不可恢复的错误时触发崩溃机制让程序退出,比如:除0、内存写入错误等。 这里我们主要考虑系统遇到不可恢复的错误时即Crash时,信号相关的应用。signal信号处理是UNIX操...原创 2018-07-23 15:31:48 · 1131 阅读 · 0 评论 -
iOS 卡顿总结优化
1.除了UI部分,所有的加载操作都在后台完成。1.1 文本计算 如果一个界面中包含大量文本,文本的宽高计算会占用很大一部分资源,并且不可避免。如果你对文本显示没有特殊要求,可以参考下 UILabel内部的实现方式:用 [NSAttributedStringboundingRectWithSize:options:context:]来计算文本宽高,原创 2016-12-08 17:08:21 · 4390 阅读 · 0 评论 -
sqlite 数据库性能调优
一 、完整性检查 完整性检查 ,是保障 数据库可用 ,app可用的 ,程序启动后,优先要做的事情 数据库损坏的表现: “database disk image is malformed” 1 检查方式: (1) PRAGMA schema.integrity_check; (2) PRAGMA schema.quick_check; ...原创 2016-12-08 14:24:52 · 7997 阅读 · 0 评论 -
iOS 性能优化之业务性能监控
第一种: NSDate 精确度可能是微秒(μs)NSDate* tmpStartData = [NSDate date];//You code here...double deltaTime = [[NSDate date] timeIntervalSinceDate:tmpStartData];NSLog(@"cost time = %f s", deltaTime);转载 2016-11-08 17:21:55 · 678 阅读 · 0 评论 -
UIImage 加载性能优化
UIImage 存在 延迟解压的问题。这会占用时间。 一旦图片文件被加载就必须要进行解码,解码过程是一个相当复杂的任务,需要消耗非常长的时间。解码后的图片将同样使用相当大的内存。 用于加载的CPU时间相对于解码来说根据图片格式而不同。对于PNG图片来说,加载会比JPEG更长,因为文件可能更大,但是解码会相对较快,而且Xcode会把PNG图片进行解码转载 2016-04-06 20:06:15 · 4475 阅读 · 0 评论 -
OSATOMIC与synchronized 加锁的对比
(转: http://blog.youkuaiyun.com/a21064346/article/details/8076972)#import导入这个文件,可以调用里面的函数,来保证变量的数值。/*! @header * These are the preferred versions of the atomic andsynchroniz转载 2016-04-26 14:40:26 · 393 阅读 · 0 评论 -
OSAtomic原子操作
OSAtomic原子操作OCT 17TH, 2014 | COMMENTS并发编程一个主要问题就是如何同步数据。同步数据的方式有很多种,这里我们介绍一下libkern/OSAtomic.h。这个头文件包含是大量关于原子操作和同步操作的函数,如果要对数据进行同步操作,这里面的函数可以作为我们的首选项。不同平台这些函数的实现是自定义的。另外,它们是线程安全的。需要注意的是,转载 2016-04-26 15:05:38 · 988 阅读 · 0 评论 -
Ios 性能分析工具 及其使用侧重点
测试我们的程序性能在开发iphone程序的时候,如果程序会有较大的开销并且希望运行在配置较低的早期设备上,我们就需要解决一些在设备环境窘迫的时候出现的性能问题,程序性能优化调整上升为一个不可忽视的问题。接下来介绍一些现有的一些测试工具,来帮助程序员发现热点,优化性能,解决程序bug。并希望以后可以出现的一些测试工具或方案。一、 现有工具Shark代码转载 2016-05-25 15:10:02 · 415 阅读 · 0 评论 -
image 圆角
方法一:效率高 aImageView.layer.cornerRadius = aImageView.frame.size.width/2.0; aImageView.layer.masksToBounds = YES;方法二:效率低CAShapeLayer *layer = [CAShapeLayer layer]; UIBezierP原创 2016-04-17 22:39:33 · 412 阅读 · 0 评论 -
iOS 高效添加圆角效果实战讲解
http://www.cocoachina.com/ios/20160301/15486.html转载 2016-05-14 21:46:19 · 261 阅读 · 0 评论 -
IOS在后台每隔一段时间执行一下 资料1
如果你的应用程序需要在设备休眠的时候还能够收到服务器端发送的消息,那我们就可以借助VOIP的模式来实现这一需求。但是如果的应用程序并不是正真的VOIP应用,那当你把你的应用提交到AppStore的时候基本上会被苹果Reject. 但是如果你的应用是企业内部发布的或者你只想了解其中的原理,那该文也许对您会有所帮助。 一、在iOS中如何应用VOIP VOIP程序需要稳定的网络去连接和它相关的服务,转载 2016-04-24 20:57:58 · 2474 阅读 · 0 评论 -
IOS在后台每隔一段时间执行一下 资料2
步骤:1.在info.plist里加入UIBackgroundModes键,其值为数组,数组之一为voip字符串:UIBackgroundModesvoip2.在程序启动的时候调用- (void)setupBackgroundHandler函数,函数体如下:#pragma mark - VoIP - (void)setup转载 2016-04-24 20:58:44 · 756 阅读 · 0 评论 -
ios在后台每隔一段时间执行一下 资料3
如何使应用被切到后台,应用中的网络连接仍然接收数据并维持存活(像QQ iphone 一样);其实按 IOS官方文档一步一步做就可以实现上述功能;这里主要说一下我按文档遇到的问题,以及将原来的C/C++程序(主要是网络层)简单的修改一下就可以支持 IOS后台运行的方法.1.在 xxxx Info.plist 添加 以支持 后台运行UIBackgroundModesvoip转载 2016-04-24 21:00:22 · 1875 阅读 · 0 评论 -
Block如何避免self retain
http://stackoverflow.com/questions/3975675/objective-c-blocks-is-there-a-way-to-avoid-self-being-retained从以上的讨论中,我没没有办法让block引用参数而不导致selfretain的方法,但是提到了三种方式来实现在block中引用参数而不导致self retain的解决转载 2016-05-22 00:06:43 · 316 阅读 · 0 评论 -
iOS实时卡顿监控
iOS实时卡顿监控http://www.tanhao.me/code/151113.html/信iOS卡顿监控系统http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ%3D%3D&idx=1&mid=207890859&scene=23&sn=e98dd604cdb854e7a5808d20转载 2016-05-22 20:51:34 · 585 阅读 · 0 评论 -
ios 关于PNG和JPEG格式压缩
大小:UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数而UIImagePNGRepresentation只需要图片引用作为参数.UIImagePNGRepresentation(UIImage \*image)要比UIImageJPEGRepresentation(UIImage* image, 1.0)返回的图片数据量大很多.同样的一张照片,原创 2016-09-19 22:30:24 · 2760 阅读 · 0 评论 -
BSBacktraceLogger 堆栈抓取
原理:用线程 抓取堆栈信息https://github.com/bestswifter/BSBacktraceLogger转载 2016-09-07 12:20:08 · 1711 阅读 · 0 评论