多核时代,还在使用任务管理器来看程序的性能吗?
是否为了一个程序只占用了13%的CPU利用率而沾沾自喜呢?
别忘了现在是多核时代,四核,超线程的i7. 单个线程最多只能占到12.5%的CPU利用率。
忘记这个简单的CPU利用率吧,多核时代,你需要具体知道到每个线程的利用率。
这篇博客,来源一个刚刚遇到的问题。
背景是我们正在针对Windows Media Player开发一些东西,具体是什么不重要。
我们遇到了两个不同策略需要做抉择,到底是哪一个好呢?
如果使用任务管理器来看,处理同样的任务,两个策略的CPU使用率都差不多在35%上下,没有太大的区别。(实验的平台是个双核超线程CPU)
但是如果使用更加高级的工具: Windows Performance Analysis Tools, 就能得到更多的信息。
策略A的结果:
在这里可以看到,wmplayer.exe的CPU使用率总共是33.62%, 但是其中有个线程3536的使用率占到了24.34%. 对于双核超线程而言,单线程最大占到25%. 所以线程3536完全成为了系统的瓶颈,即使还有更多的CPU资源,Windows Media Player都不可能跑的更快了。
策略B的结果:
可以看到,wmplayer.exe的CPU使用率为38.66, 还要略高于策略A.
但是,最高的单线程CPU使用率是13.46%,整个CPU的负载被平衡到了不同的线程中。整个系统中没有明显的瓶颈出现了。
孰优孰劣呢?
毫无疑问,策略B更好,Windows Media Player有能力处理规模更大的问题。
至于Windows Performance Analysis Tool怎么用,我就不多说了。外事不决问Google.
最后,惯例。
话说贼不走空,对于那些不喜欢这篇博客,又误入的同学,至少下面的福利你会喜欢。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验