2

我正在尝试对一个用 C++ 编写的相当大的项目(整个解决方案中有大约 40'000 个源文件,但正在分析的项目有大约 200 个源文件)进行 Instrumentation Profiling。

每次我运行分析时,它都会创建一个大约 34GB 的巨大报告,然后,当它要分析它时,它会尝试(我认为)将整个文件加载到 RAM 中。

显然,它使计算机无法使用,我必须在分析仪完成之前停止它。

有什么建议么?

4

3 回答 3

6

嗨,希望这个回复不会太晚。这是来自 Visual Studio 分析器团队的 Andre Hamilton。分析这么大的报告文件确实需要一些时间。检测会产生这么多数据,因为您的所有功能都已检测。通过检测一些函数或特定的二进制文件,如果您不介意通过命令行进行分析,您可能可以加快速度。这将生成一个 vsp 文件,然后您可以在 VS 中打开该文件并正常使用。假设您的项目需要 n 个二进制文件才能运行。让我们假设在这些二进制文件中,您对二进制 ni 的性能感兴趣

打开 VisualStudio 命令提示符 1)vsinstr ni.dll检测整个二进制文件或使用 vsinstr 的 /include 或 /exclude 选项进一步限制检测哪些函数。注意,如果您的二进制文件已签名,则需要在检测后辞职

2)通过给定的命令以检测模式启动分析器 vsperf /start:trace /output:myinstrumentedtrace.vsp

3)启动您的应用程序

4)当你准备好停止分析时 vsperf /shutdown

希望这可以帮助

(注意,我假设您拥有 VS 的许可副本来收集和分析数据)。

于 2013-04-14T08:00:30.870 回答
1

在分析大型或“密集”程序时,这是一个普遍的问题。您需要限制探查器仅从代码库的某些单元收集数据。在 Microsoft 的分析器中,这是通过在命令行或 IDE 中使用包含/排除开关来完成的。

于 2013-04-01T08:06:17.430 回答
0

VS 中有一个错误,原因是大部分分析工作是在 UI 线程中完成的,这使得 VS 无法使用,如http://channel9.msdn.com/Forums/TechOff/260091-Visual-Studio-Performance中所述- 10 分钟内分析

您可以尝试 VS 2012 看看问题是否已解决,但毫无疑问,加载 34 GB 文件并不是一项简单的任务,这也是导致系统无法使用的原因,正如 John 在上面评论部分所建议的那样,将您的代码分解为较小的组件,然后进行分析,希望对您有所帮助!

于 2013-03-01T17:40:49.110 回答