The Visual Studio profiler has two modes of operation, selection and tooling. In sampling mode, it does not output samples when it is locked, as for input / output. Because of this, it cannot show you any part of the call tree except the one in which the leaves perform unprocessed processor processing.
You are using sampling mode. Try using a tool that works in wall-mounted mode, so it includes I / O.
And whatever you do, please ignore the exceptional time. Pay attention only to the inclusive time as a percentage of the total time. You are looking for routines in your code that are active most of the time, most of which are spent calling other routines, and you are looking for calls that you can get around.
PS I am this one that always works.
source share