温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

实战开发经验: 如何降低CPU占用率

发布时间:2020-08-16 08:55:00 来源:网络 阅读:15362 作者:Jhuster 栏目:开发技术

在软件开发和性能测试中,CPU占用率是一个很重要的指标,到底有哪些因素会导致CPU占用率上升呢?又有哪些手段可以降低CPU的占用率呢?本文是“Jhuster的专栏”的《实战开发经验 》系列又一篇文章,简单地总结了一下关于CPU占用率的那些事。


1. 如何测试CPU占用率?


首先,我们要学会如何测试程序的CPU占用率,这里简单地给出最基础的方法:


Windows上可以通过Ctrl+Alt+Del组合调出“任务管理器”,然后查看指定进程的详细信息即可。


Linux/Android平台,可以在命令行输入:top 命令,找到指定进程即可。


注意,测试的时候,一般要分多组情况来测试,比如:空闲时、中等负荷运行时、高负荷运行时……


2. 有哪些因素导致CPU占用率上升?


(1) 复杂计算


运行一些算法处理,比如:音视频编解码、图像处理、科学计算等等,特别是一些浮点数的运算。


(2) 持续占用CPU


某些高优先级的进程/线程持续占用CPU,很少或者从来不sleep,类似 while(1) {}


(3) 数据拷贝


频繁进行大量的数据拷贝。


(4) 频繁的系统调用


比如:频繁调用 printf 打印、读写硬盘、网络收发等等。


3. 有哪些手段可以降低CPU占用率?


(1) 硬件加速


常见的硬件加速有:多核计算、GPU、DMA、音视频的硬件编解码等,很多硬件加速功能需要平台提供API或者驱动支持,在需要优化CPU占用率的时候可以重点关注一下。


(2) 学会“让出”CPU


在程序中,有多种方法可以“让出”CPU,第一种是 sleep,第二种是 await/signal 机制,任何编程语言都会有类似的接口。


另外,还有一种策略:适当降低你的进程/线程的优先级。


(3) 避免频繁的数据拷贝


在多线程编程中,数据拷贝是难免的,但是完全可以通过一些技巧减少一些不必要的拷贝,心中要有这理念,编程时多留点心。


(4) 合并一些系统调用


很多时候,多次打印可以尽量合并到一起再打印、多次硬盘/网络访问请求也可以合并到一起再发送。


4. 小结


关于CPU占用率的那些事就介绍到这儿了,很多地方只是点到而止,并没有完全展开,大家可以搜索相关的文章和资料做深度地优化和分析,有任何疑问或者建议欢迎留言或者来信lujun.hust@gmail.com交流,或×××博 @卢_俊 或×××ter)获取最新的文章和资讯。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI