实战开发经验:如何降低CPU占用率-创新互联

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

创新互联建站长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为霸州企业提供专业的成都网站设计、成都做网站,霸州网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

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)获取最新的文章和资讯。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:实战开发经验:如何降低CPU占用率-创新互联
标题网址:http://myzitong.com/article/dccecj.html