2013-03-01 41 views
2

我正在尝试做一个相当大的项目的仪表分析(在整个解决方案中大约有40,000个源文件,但在剖析下的项目大约有200个源文件),编写在C++中。Visual Studio Profiler使用大量的内存

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

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

有什么建议吗?

+2

我不完全确定你希望我们告诉你什么 - 除了“去你的老板,并要求一台64或128GB内存的计算机... – 2013-03-01 17:23:09

+1

假设你没有使用意大利面代码,你应该考虑将代码库分解为模块/静态或动态库,然后你可以在每个组件上进行性能分析而不用浪费太多内存。 – 2013-03-01 17:36:57

+1

对不起,以错误的方式提问 这里的问题不是如何载入这么大的报告,是关于如何不创建它,我不知道为什么这么大。被分析的项目非常小,它有100-200个文件,编译的可执行文件大约是10Mb(AFAIR).. – Jamby 2013-03-01 21:47:35

回答

0

有一个在VS中的错误,原因是大部分的分析工作是在UI做的线程它使VS无法使用,如http://channel9.msdn.com/Forums/TechOff/260091-Visual-Studio-Performance-Analysis-in-10-minutes

提到你可以给尝试VS 2012,看看问题已经解决了,但毫无疑问,加载34 GB文件不是一件简单的任务,它也是导致系统无法使用的原因,因此,John在评论部分中提出了以上建议,将代码拆分为较小的组件,然后进行分析,希望它有帮助!

1

这是分析大型或“密集”程序时的一般问题。您需要限制分析器仅从您的代码库的某些单元收集数据。在Microsoft的配置文件中,这是通过在命令行或IDE中使用Include/Exclude开关完成的。

5

嗨,希望这个回应不算太晚。这是Visual Studio Profiler团队的Andre Hamilton。分析这么大的报表文件确实需要一些时间。由于您的所有功能都被检测到,因此仪表可生成大量数据。通过使用一些函数或特定的二进制文件,如果您不介意通过命令行进行分析,您可能会加快速度。这将生成一个vsp文件,然后您可以在VS中打开并正常使用。假设你的项目需要运行n个二进制文件。让我们假设这些二进制文件,有兴趣的二进制妮

的表现打开一个VisualStudio的命令提示符 1)不要vsinstr ni.dll仪器整个二进制或使用/ include或/排除vsinstr的选项进一步限制哪些功能是插装的。 NB如果你的二进制文件上签字,则需要插装

2后辞职)通过给定的命令 vsperf /start:trace /output:myinstrumentedtrace.vsp

3)启动仪器仪表模式分析器启动应用程序

4)当你准备停止剖析 vsperf /shutdown

希望这有助于

(请注意,我假设你有一个许可VS的副本收集和分析数据)。

+0

请注意,VSPerf需要Windows 8或更高版本。 – 2015-09-24 11:35:41