我正在使用Visual Studio来剖析我的多线程C++应用程序。 从我已阅读的采样方法中,我了解到它以指定的时间间隔查看处理器,以查看正在执行的函数。剖析多线程代码,如何抽样工作
我很好奇它是如何处理多线程代码的。很有可能两个或多个函数可能在不同核心上的不同线程上同时执行。在这种情况下,采样方法是否为这两个函数增加计数器?我相信这是实际发生的事情。
这实际上很难从分析报告中获得洞察。收集的样本数最多的函数(如果在工作线程上执行的话)可能在不同的核心(主线程)上执行,并且可能根本不会影响应用程序性能。但是,如果要切换主线程来执行其工作,那么它应该对性能产生可观察的影响。
有没有更好的方法来分析多线程代码?
是的。如果线程不影响你的应用程序的性能,那么你做错了,你最好不要使用它们。模为了防止UI冻结而需要异步性,但这不是并发性。找出为什么多线程程序吸泥需要一种不同类型的工具,[并发分析器](https://msdn.microsoft.com/en-us/library/dd537632.aspx?f=255&MSPPError=-2147217396) 。 –