多核时代,还在使用任务管理器来看程序的性能吗?

摘要:
你对一个程序只使用13%的CPU感到自满吗?别忘了,这是一个多核时代,拥有四个内核和超线程i7。单个线程最多只能占CPU利用率的12.5%。忘掉这个简单的CPU利用率吧。在多核时代,您需要具体了解每个线程的利用率。如果使用任务管理器处理相同的任务,两种策略的CPU利用率约为35%,并且没有太大的差异。但如果您使用更高级的工具:Windows性能分析工具,则可以获得更多信息。毫无疑问,策略B更好,Windows Media Player能够处理更大规模的问题。

是否为了一个程序只占用了13%的CPU利用率而沾沾自喜呢?

clip_image001

别忘了现在是多核时代,四核,超线程的i7. 单个线程最多只能占到12.5%的CPU利用率。

忘记这个简单的CPU利用率吧,多核时代,你需要具体知道到每个线程的利用率。

这篇博客,来源一个刚刚遇到的问题。

背景是我们正在针对Windows Media Player开发一些东西,具体是什么不重要。

我们遇到了两个不同策略需要做抉择,到底是哪一个好呢?

如果使用任务管理器来看,处理同样的任务,两个策略的CPU使用率都差不多在35%上下,没有太大的区别。(实验的平台是个双核超线程CPU)

但是如果使用更加高级的工具: Windows Performance Analysis Tools, 就能得到更多的信息。

策略A的结果:

clip_image002

在这里可以看到,wmplayer.exe的CPU使用率总共是33.62%, 但是其中有个线程3536的使用率占到了24.34%. 对于双核超线程而言,单线程最大占到25%. 所以线程3536完全成为了系统的瓶颈,即使还有更多的CPU资源,Windows Media Player都不可能跑的更快了。

策略B的结果:

clip_image003

可以看到,wmplayer.exe的CPU使用率为38.66, 还要略高于策略A.

但是,最高的单线程CPU使用率是13.46%,整个CPU的负载被平衡到了不同的线程中。整个系统中没有明显的瓶颈出现了。

孰优孰劣呢?

毫无疑问,策略B更好,Windows Media Player有能力处理规模更大的问题。

至于Windows Performance Analysis Tool怎么用,我就不多说了。外事不决问Google.

最后,惯例。

话说贼不走空,对于那些不喜欢这篇博客,又误入的同学,至少下面的福利你会喜欢。

多核时代,还在使用任务管理器来看程序的性能吗?第4张

免责声明:文章转载自《多核时代,还在使用任务管理器来看程序的性能吗?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇命名空间(app_name)和实例命名空间(namespace)Spring Cloud OAuth2 实现用户认证及单点登录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

AS3多线程快速入门(二):图像处理[译]

原文链接:http://esdot.ca/site/2012/intro-to-as3-workers-part-2-image-processing 在《AS3多线程快速入门》系列教程的第一部分中,我们研究了AS3 Worker的基本原理,包括多种通信方式,还展示了一个简单例子:Hello World Worker。 在这篇文章里,我将更进一步,向你展...

QT多线程及通过事件进行通信(通过自定义事件,然后QApplication::postEvent给主界面,我之前用的是信号槽)

可以通过QThread实现跨平台的多线程开发,Qt库负责在特定平台上的特定多线程实现。要采用QThread进行多线程开发,首先需要包含头文件: #include <QThread> 然后需要从QThread继承一个自己的线程类,暂作MyThread,关键是要实现QThread内的一个虚函数run。在run函数内部,最后一般都调用exec(),使...

[译]GPUView

【本文翻译自GPUView的开发者Matt的blog.  https://graphics.stanford.edu/~mdfisher/GPUView.html  】 【 GPUview可以在 https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install 这里下载到】...

从源码中学习设计模式系列——单例模式序/反序列化以及反射攻击的问题(二)

一、前言 这篇文章是学习单例模式的第二篇,之前的文章一下子就给出来看起来很高大上的实现方法,但是这种模式还是存在漏洞的,具体有什么问题,大家可以停顿一会儿,思考一下。好了,不卖关子了,下面我们来看看每种单例模式存在的问题以及解决办法。 二、每种Singleton 模式的演进 模式一 public classLazySingleton {...

c#之多线程之为所欲为

一 什么是多线程 1、 什么是进程?一个 exe 运行一次就会产生一个进程,一个 exe 的多个进程之 间数据互相隔离。 2、 一个进程里至少有一个线程:主线程。我们平时写的控制台程序默认就是单线程的,代 码从上往下执行,一行执行完了再执行下一行; 3、 什么是多线程:一个人两件事情同时做效率高。同一时刻一 个人只能干一件事情,其实是在“快速频繁切换”,如...

synchronized实现原理及其优化-(自旋锁,偏向锁,轻量锁,重量锁)

1.synchronized概述: synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性,有序性,可见性。 2.synchronized的原理: 我们先通过反编...