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


    是否为了一个程序只占用了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.

    最后,惯例。

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

  • 相关阅读:
    HDU 2054 A == B ?(找小数点)
    javaWeb_使用标签库简化jsp
    EC2的维护更新-总结篇及有效经验分享
    SSLStrip 终极版 —— location 瞒天过海
    华为部分真机调试无法显示log问题解决
    LeetCode
    Tcl脚本调用高层API实现仪表使用和主机创建配置的自己主动化測试用例
    web工程调用hadoop集群1.2
    3DShader之移位贴图(Displacement Mapping)
    Java 学习第一天
  • 原文地址:https://www.cnblogs.com/aoaoblogs/p/2154797.html
Copyright © 2020-2023  润新知