VisualStudioProfiler使用大量RAM 我试图对一个相当大的项目进行一个仪器分析(在整个解决方案中大约有40个源文件,但是在剖析下的项目大约有200个源文件),用C++编写。

VisualStudioProfiler使用大量RAM 我试图对一个相当大的项目进行一个仪器分析(在整个解决方案中大约有40个源文件,但是在剖析下的项目大约有200个源文件),用C++编写。,c++,visual-studio-2010,profiling,C++,Visual Studio 2010,Profiling,每次我运行评测时,它都会创建一个大约34GB的巨大报告,然后,当它要分析它时,它会尝试(我认为)将整个文件加载到RAM中 显然,这会导致计算机无法使用,我必须在分析器完成之前停止它 有什么建议吗?VS中有一个bug,原因是大部分评测工作都是在UI线程中完成的,这使得VS无法使用,如中所述 您可以尝试VS 2012,看看问题是否得到解决,但毫无疑问,加载34 GB文件并不是一项简单的任务,这也是导致系统无法使用的原因,因此正如John在上面的评论部分所建议的,在较小的组件中断开代码,然后进行评测,

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

显然,这会导致计算机无法使用,我必须在分析器完成之前停止它


有什么建议吗?

VS中有一个bug,原因是大部分评测工作都是在UI线程中完成的,这使得VS无法使用,如中所述


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

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

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

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

2) 通过给定的命令在检测模式下启动探查器
vsperf/start:trace/output:myinstrumentedtrace.vsp

3) 启动您的应用程序

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

希望这有帮助


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

我不完全确定您希望我们告诉您什么-除了“去找你的老板,要求一台机器,它的RAM是64或128GB…假设你不使用意大利面代码,你应该考虑把代码库分解成模块/静态或动态库。然后,您就可以在每个组件上进行性能分析,而不会占用太多的ram。很抱歉以错误的方式问了这个问题。这里的问题不是如何加载如此大的报告,而是如何不创建它。我真的不知道为什么这么大。。正在分析的项目非常小,它有100-200个文件,编译的可执行文件大约为10Mb(AFAIR)…分析是一个消防水带问题,一个简单的程序可以在很短的时间内生成大量数据。处理34个jiggabytes是一件你可以尝试的事情,你可以在周五下午运行它,然后在周一早上看看你是否有什么收获。很重要的一点是你从不等待,那是自杀。更改探查器设置以减慢消防软管的速度。例如使用采样而不是检测。请注意,VSPerf需要Windows 8或更新版本。