我正在使用Visual Studio來剖析我的多線程C++應用程序。 從我已閱讀的採樣方法中,我瞭解到它以指定的時間間隔查看處理器,以查看正在執行的函數。剖析多線程代碼,如何抽樣工作
我很好奇它是如何處理多線程代碼的。很有可能兩個或多個函數可能在不同核心上的不同線程上同時執行。在這種情況下,採樣方法是否爲這兩個函數增加計數器?我相信這是實際發生的事情。
這實際上很難從分析報告中獲得洞察。收集的樣本數最多的函數(如果在工作線程上執行的話)可能在不同的核心(主線程)上執行,並且可能根本不會影響應用程序性能。但是,如果要切換主線程來執行其工作,那麼它應該對性能產生可觀察的影響。
有沒有更好的方法來分析多線程代碼?
是的。如果線程不影響你的應用程序的性能,那麼你做錯了,你最好不要使用它們。模爲了防止UI凍結而需要異步性,但這不是併發性。找出爲什麼多線程程序吸泥需要一種不同類型的工具,[併發分析器](https://msdn.microsoft.com/en-us/library/dd537632.aspx?f=255&MSPPError=-2147217396) 。 –