代码之家  ›  专栏  ›  技术社区  ›  olliej

适合Windows的分析器?[复制品]

  •  24
  • olliej  · 技术社区  · 16 年前

    Windows是否有合适的采样(如非检测)配置文件可用?最好是类似于MacOS上的Shark的东西,尽管我愿意接受我必须为Windows上的这种分析器付费。

    我在vs团队套件中尝试过这个剖析器,但没有给我留下太多印象,我想知道是否还有其他好的。

    [编辑:ERK,我忘了说这是C/C++,而不是.NET-对不起任何混淆

    9 回复  |  直到 11 年前
        1
  •  11
  •   Dickon Reed    16 年前

    Intel VTune 是好的,不是工具。我们为Windows评估了大量的分析器,这对于使用驱动程序代码是最好的(尽管它也使用非托管的用户级代码)。一个特别的优点是它读取所有的英特尔处理器性能计数器,这样您就可以很好地理解代码运行缓慢的原因,并且它对于将预取指令放入我们的代码、整理数据布局以与缓存线良好配合以及在多核系统中使缓存线失效的方式非常有用。

    它是商业的,我不得不说它不是世界上最简单的用户界面。

        2
  •  16
  •   user15071    16 年前

    对于Windows,请查看免费的 Xperf 随Windows SDK一起提供。它使用采样配置文件,具有一些有用的用户界面,不需要检测。对于跟踪性能问题非常有用。您可以回答以下问题:

    谁使用的CPU最多?使用调用堆栈向下钻取函数名。

    谁分配的内存最多?

    未完成的内存分配(泄漏)

    谁在执行最多的注册表查询?

    磁盘写入?等。

        3
  •  12
  •   Naaff    16 年前

    我知道我要在被问到这个问题几个月后添加我的答案,但我想我会指出一个体面的开源剖析器: Very Sleepy .

    它没有前面提到的其他一些分析程序所具有的功能计数,但是它是一个相当值得尊敬的采样分析程序,在大多数情况下都能很好地工作。

        4
  •  6
  •   JWWalker    11 年前

    AMD的代码分析师是 免费的 here

        5
  •  4
  •   Greg Whitfield    16 年前

    我们同时使用vtune和aqtime,我可以保证两者都使用。哪个对你最有效取决于你的需要。两个都有免费试用版-我建议你试一试。

        6
  •  3
  •   bk1e    16 年前

    这个 Windows Driver Kit 包括一个非检测用户/内核采样探查器 "kernrate" . 它对于分析多进程应用程序、在内核中花费大部分时间的应用程序以及设备驱动程序(当然)似乎很有用。它也可以在 KrView (Kernrate Viewer) Windows Server 2003 Resource Kit Tools 包装。

    kernrate在Windows 2000和更高版本上工作(与xperf不同,xperf需要Vista/Server2008)。它是基于命令行的,文档中有一些令人生畏的选项列表。我不确定它是否能记录调用堆栈或只是程序计数器。如果使用符号服务器,请确保 dbghelp.dll symsrv.dll 在同一目录中 kernrate.exe 防止它使用古代版本的 dBGelpul.DLL 安装在 %SystemRoot%\system32 .

        7
  •  2
  •   Jon Trauntvein    16 年前

    两年前,我用一个相当大的项目尝试了英特尔的“vtune”。当时它是一个检测分析器,检测DLL花费了很长时间,以至于我试图分析它,一个小时后我终于失去了耐心。

    我有一个非常成功的工具,我强烈推荐它是 AQTime . 它不仅提供了出色的性能分析资源,而且还提供了非常好的内存分析功能,这对我跟踪内存泄漏有很大帮助。

        8
  •  1
  •   SamB som-snytt    15 年前

    Luke Stackwalker 看起来很有希望——它没有我想要的那么完美,但是它是开源的,它确实做了一些看起来非常接近@mike dunlavey一直说我们应该做的事情。(当然,然后它会试图将所有这些信息都简化成迈克非常厌倦的典型无用的调用图,但是用源作为我们的盟友来解决这个问题并不太难。)

    据我所知,它甚至可以计算在内核中等待的时间…

        9
  •  -3
  •   Jonathan Allen    16 年前

    我不确定什么是非检测分析器,但我可以说,对于.NET,我喜欢Redgate的蚂蚁分析器。版本3比MS版本更易于使用,版本4允许任意时间段,使MS看起来像一个笑话。