2013-12-11 48 views
3

想象一下,您有一个命令行应用程序,它接受输入文件并对其执行任何操作。现在想象你想要采样/分析这个应用程序。如果是Visual Studio,您只需选择性能分析方法(采样/检测),VS将为您运行应用程序并在程序完成时收集数据。但据我所见,VisualVM中没有类似的功能。您必须运行您的应用程序,然后在VisualVM中选择它,然后明确开始采样/分析。问题在于,有时使用某些输入数据执行程序比使用VisualVM所需的时间少。同样采用这种方法,不可能批量配置文件应用程序。有人建议以Eclipse的调试模式启动应用程序,并在main()方法的开始处设置断点。然后设置VisualVM并继续执行。但我怀疑在Debug和Release模式下运行会对性能产生影响。 建议?使用VisualVM进行性能分析应用程序

回答

1

VisualVM 1.3.6有一个新的Startup Profiler plugin,允许您从应用程序启动时对应用程序进行分析。有关更多信息,请参阅此article

1

如果程序执行I/O操作,Visual Studio采样器将不会看到I/O,因为它是“CPU采样器”(即使几乎所有的时间都花在等待I/O上)。

如果使用Instrumentation,则不会看到任何行级别的信息,因为它只在功能级别进行汇总。我使用this technique

如果程序运行得太快而无法采样,只需在其周围放置一个临时外循环,例如100或1000次迭代。

调试和发布模式之间的差别将是微乎其微,除非你在你的代码,在毛圈不包含任何函数调用,或花费时间的好分数紧密循环,如果你正在做数据结构操作在库中做了大量验证。

如果你是,那么你的样品将显示你是,你会知道,释放会产生速度差。

就批处理分析而言,我没有。我只是留意程序的整体吞吐率。如果有一些输入似乎会使其耗时太长,那么我会使用该输入在程序上执行采样过程,查看问题所在,然后解决问题。