陪玩系统开发,CPU引起的卡顿如何优化?

陪玩系统开发,CPU引起的卡顿如何优化?

一、尽量用轻量级的对象

1、比如用不到事件处理的地方,可以考虑使用CALayer取代UIView
2、还有能用基本数据类型就不用对象类型等等

二、不要频繁地调用UIView的相关属性

1、比如frame、bounds、transform等属性,尽量减少不必要的修改
2、尽量提前计算好布局,在有需要时一次性调整对应的属性,不要多次修改属性
3、尽量减少使用Autolayout,Autolayout会比直接设置frame消耗更多的CPU资源
4、其他需要设置的属性最后是能确定时再赋值,不要多次更改

三、图片的size最好刚好跟UIImageView的size保持一致

如果图片本身的大小和我们给予的大小有出入,CPU会去进行伸缩的处理,也是会消耗资源

四、控制一下线程的最大并发数量

1、不要过多的创建线程,线程的创建和消耗也是会消耗资源的
2、尽量保持较少数量的线程,设置好最大并发数
3、如果需要长期开启线程来执行任务,可以考虑让线程常驻,并再不需要后再进行统一销毁

五、尽量把耗时的操作放到子线程

1、比如对文本的处理(尺寸计算、绘制),都可以放到异步去做处理,例如下面代码:

// 文字计算
[@"text" boundingRectWithSize:CGSizeMake(100, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:nil context:nil];// 文字绘制
[@"text" drawWithRect:CGRectMake(0, 0, 100, 100) options:NSStringDrawingUsesLineFragmentOrigin attributes:nil context:nil];

 

还有对图片的处理,对图片的解码和绘制都是会消耗性能的

我们经常使用的给UIImage赋值的方法,其本质是会去进行图片的解码和绘制的,所以我们可以将解码绘制的过程放在子线程来处理,详细代码如下

// imageNamed:底层会进行对图片的解码和绘制
UIImageView *imageView = [[UIImageView alloc] init];
imageView.image = [UIImage imageNamed:@"timg"];// 换成如下方法
UIImageView *imageView = [[UIImageView alloc] init];
self.imageView = imageView;dispatch_async(dispatch_get_global_queue(0, 0), ^{// 获取CGImageCGImageRef cgImage = [UIImage imageNamed:@"timg"].CGImage;// alphaInfoCGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(cgImage) & kCGBitmapAlphaInfoMask;BOOL hasAlpha = NO;if (alphaInfo == kCGImageAlphaPremultipliedLast ||alphaInfo == kCGImageAlphaPremultipliedFirst ||alphaInfo == kCGImageAlphaLast ||alphaInfo == kCGImageAlphaFirst) {hasAlpha = YES;}// bitmapInfoCGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Host;bitmapInfo |= hasAlpha ? kCGImageAlphaPremultipliedFirst : kCGImageAlphaNoneSkipFirst;// sizesize_t width = CGImageGetWidth(cgImage);size_t height = CGImageGetHeight(cgImage);// contextCGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, 0, CGColorSpaceCreateDeviceRGB(), bitmapInfo);// drawCGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);// get CGImagecgImage = CGBitmapContextCreateImage(context);// into UIImageUIImage *newImage = [UIImage imageWithCGImage:cgImage];// release
    CGContextRelease(context);CGImageRelease(cgImage);// back to the main threaddispatch_async(dispatch_get_main_queue(), ^{self.imageView.image = newImage;});
});

 

以上就是陪玩系统开发,CPU引起的卡顿如何优化?, 更多内容欢迎关注之后的文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880695.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IvorySQL 升级指南:从 3.x 到 4.0 的平滑过渡

日前,IvorySQL 4.0 重磅发布,全面支持 PostgreSQL 17,并且增强了对 Oracle 的兼容性。关于 IvorySQL 4.0 的介绍,各位小伙伴可以通过这篇文章回顾:IvorySQL 4.0 发布:全面支持 PostgreSQL 17. 在 IvorySQL 4.0 发布后,有小伙伴私下询问升级方法,那么本篇文章就来详细描…

kvm 基础

kvm 概述 KVM(Kernel-based Virtual Machine)是一个开源虚拟化技术,它将 Linux 内核转变为一个裸金属 hypervisor。 基本概念 1. 集成于 Linux:KVM 是 Linux 内核的一部分,支持在现有的 Linux 系统上创建和管理虚拟机。 2. 虚拟化类型:KVM 支持完全虚拟化,允许运行不同操…

Ftrans数据跨境传输方案,推动数据跨境安全有序自由流动!

在全球数字经济快速发展的今天,数据跨境传输流动已成为企业国际化不可回避的重要议题。根据权威机构数据,全球跨境数据流量每年增长超过30%,企业数据出境已从简单的信息传输,演变为复杂的合规性管理。 目前,我国数据跨境传输安全管理体系已经初步构建形成。《网络安全法》…

如何打造高效、统一的供应商协同平台?

供应商协同,简单说就是把供需双方的各种“需求”找到对应的“供应”来匹配。这种“需求”和“供应”更多的不是实物,而是资讯、方法和活动。各企业需要一个供应商协同平台实现协同管理,供应链节点各企业形成共同的彼此认同的价值取向和文化理念,建立全面的战略合作伙伴关系…

RestClient 通过拦截器实现请求加密

今天我发现了一个关于请求加密的有效写法,特此分享给大家。如果你的加密需求是将请求参数也包含在内,通常情况下,我们需要先将请求体转换成 JSON 格式或其他对象类型,再使用字符串的形式进行加密操作。以下是伪代码示例,展示了这一过程的实现方法: String payloadString …

读算法简史:从美索不达米亚到人工智能时代10纠错和加密

通信系统需纠错,汉明码优化校验和;互联网设计缺安全,公钥加密RSA成基石,保障数据传输安全,现广泛用于万维网SSL。1. 纠错 1.1. 像互联网这样的通信系统,被设计成将信息的精确副本从发送方传输到接收方 1.2. 通常,接收到的信号会受到电子噪声的污染1.2.1. 噪声是任何会破…

2025 年java最新 ide 系列激活

2025 ide 激活N6IQ9MTOK0-eyJsaWNlbnNlSWQiOiJONklROU1UT0swIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5Zyw5Z2AIHd3d8K3YWppaHVvwrdjb20iLCJsaWNlbnNlZVR5cGUiOiJQRVJTT05BTCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJl…

INFINI Labs 产品更新 - Easysearch 增强 Rollup 能力,Console 完善 TopN 指标等

INFINI Labs 产品更新发布!此次更新,Easysearch 增强 Rollup 能力,支持更多的聚合方式;Console 完善了 TopN 的指标,支持自定义视图,并内嵌视图模板;Gateway 进行了多处优化以及修复相关 Bug 等等。欢迎下载体验,探索更多可能! INFINI Easysearch v1.10.1 INFINI Easy…

Proj CJI Paper Reading: Detecting language model attacks with perplexity

AbstractTool: PPL Findings:queries with adversarial suffixes have a higher perplexity, 可以利用这一点检测 仅仅使用perplexity filter对mix of prompt types不合适,会带来很高的假阳率Method: 使用Light-GDB根据perplexity和token length filter带有adversarial suffix…

年化收益17倍的红中探底(单针探底)操作策略

作者QQ: 396068801,加Q分享交流通达信红中探底指标。 红中探底条件: # 更新日志:# 2025-2-7 改为红中创10天新低,25日均线向上,尾盘进。# 止盈操作:涨停不卖, 每涨8%就卖一半,直到浮盈达到3倍清仓;高点跌8%清仓。# 止损: 买入后只要跌超6%就清仓止损。# 卖票时间: …

Java基础学习(十五)

Java基础学习(十五):IO流 目录Java基础学习(十五):IO流概念基本流字节输出流 FileOutputStream字节输入流 FileInputStream字符集Java 中的编码和解码字符输入流 FileReader字符输出流 FileWriter缓冲流字节缓冲流字符缓冲流转换流序列化流 和 反序列化流序列化流反序列化…