我有一个20M的MFC程序包含动态库文件,但是每次运行起来,cpu的占用率达到30%以上,这个程序不是很复杂,有什么办法能检测程序在哪里占用cpu资源这么高。

解决方案 »

  1.   

    这个就不好说了,空循环一样耗费CPU的
      

  2.   

    要是新开的线程造成的话,最少也接近50%
    检查一下OnIdle?
      

  3.   

    方法一:推测法
    根据你的程序的用途,推测主要的功能运算在哪里,然后查找可能占用CPU比较高的部分
    方法二:给每个函数添加日志,如果调用平凡的方法采用内联方式
      

  4.   

    用 ProceXP.exe,选中你要看的进程,双击,查看 threads 项的 CPU,从 StartAddress 可看出是哪个线程,双击,CPU 高的线程,可查看调用栈,如果你设置了 ProceXP.exe 的 Configure Symbols path,你可以从 弹出的调用栈,直接看到是哪个函数导致 CPU 高。
      

  5.   

    总结一下:
    1 给每个函数添加日志,然后运行起来后,看日志那个函数被调用最多
    2 用 ProceXP.exe,选中你要看的进程,双击,查看 threads 项的 CPU,从 StartAddress 可看出是哪个线程,双击,CPU 高的线程,可查看调用栈,如果你设置了 ProceXP.exe 的 Configure Symbols path,你可以从 弹出的调用栈,直接看到是哪个函数导致 CPU 高。
    3 猜测
    4 分段删除法
    5 其他检测程序,