For my work I used DotTrace to analyze slowness one of our cliƫnts experiences in our WPF desktop application. I used it before to do this which resulted in the conclusion that the DataBase calls where slow which we could then find a solution for.
This time however, I see 75% of the execution time in Native code and no clear slowness in the user code. I searched some around and saw a few other people with the same question. The answer there was either that it's normal (previous snapshot also had just a tiny part of execution time in user code, so that seems okay) or that you can analyze it further if you check the box "Collect native allocations" when making the snapshot (which I unfortunately didn't check).
If I check just the user code most of the execution time resides in DevExpress DLLs which are third party UI components. Could you then say that this is moving towards hardware related slowness (see User code part of the snapshot below)?
I used the Timeline option to create the snapshot.
My questions:
- Since the snapshot doesn't show a lot of time in true user code (excluding the DevExpress components), could I then conclude that this slowness isn't caused by inefficiency in our code?
- Can I tell anything from the native code part of the snapshot (see screenshot below)?
- Is Timeline even handy for this case or are one of the other sampling options clearer?
- How would I proceed in such a case to move close to the source of the slowness?
Thanks in advance for your help!
Sebastiaan