Assistance Understanding "Own Time"
Hello Community,
I am trying to determine the cause of a high Own Time in a function. It is the highest Own Time in my current profiling session, yet when I do a line-by-line, there isn't anything obvious about what is taking so long. Here is the function as it is displayed in dotTrace:
As you can see, line 30 seems to be the culprit. But, it is calling a method to another class. Why is the Own Time so high in this method? Am I overlooking something obvious or could this be a bug?
Thank you for any assistance you can provide,
Michael
Please sign in to leave a comment.
*Bump.*
*Bump again*
Hi Michael,
We have a few questions:
1. Why do you think that this method has high own time?
2. Could you please provide a value (in milliseconds) of own time for the method?
3. Could you please send us the snapshot or a screenshot of the expanded call tree under Create() method?
Awesome... thank you Konstantin for your reply. To start with, I am sort of curious if this is the place to ask these questions. I seem to recall these forums very active but now it seems to not be the case. I hate being a thorn (or borderline jerk) in your side by having to bump a few times to get a reply. So I am wondering for starters, is there another/expected place to ask these questions? I am starting to get comfortable with StackOverflow as a reference/context, so maybe I should start asking JB/R#U-related questions there?
Just trying to be a good citizen here. :)
As for your questions:
1) I am not sure, that is what/why I am asking. :) High Own Time means that there is time spent executing instructions within the method correct? Own Time + System time is Own time + instructions executed in sub/child calls. Do I have this correct/understood?
2) The method stands at 57ms in my session.
3) I have attached both the requested snapshot along with a screenshot of the Plain List that I am using to determine times.
Thank you for your patience as I learn your awesome application,
Michael
Michael,
Yes, this forum is not very active, so I think that the best way is to submit a support case ("Submit a request" button in the upper right corner).
About the issue:
1) Own Time + System time is Own time + time of system instructions executed in sub/child calls and not located under other user methods.
2) There is several possible explanations for 57 ms of the own time:
- there can be time distortions because of line-by-line profiling type;
- time of garbage collection which might be initiated by "new" operator could be added to the own time;
- time of JIT and Monitor.Enter method (if present) could be added to the own time.
If you want to research this situation, I would suggest to get Timeline snapshot. Also you can send all snapshots to us (via support ticket, it looks like big files can't be attached to the posts in this forum) and we'll try to help you with further analysis.
OK great Konstantin. Thank you for taking the time to explain.
To start with, there are three segments/associated concepts that I have seen to date in regards to Own Time:
1) Own Time (what I am trying to figure out here).
2) Own Time + System Time (which you have done a great job explaining).
3) Own Time and Total Time (in Plain List).
I am trying to discern the exact definition of Own time. Is Own Time the time spent specifically in a method and nothing else? Or could it be time spent in the method plus all user-based (non-system) calls under it?
Additionally, did run another test here separating the "new" statement from the "Create" call. The majority of total time (which resulted in 85ms in this latest snapshot) is not in the new/allocation but in the Create call:
In any case thank you for your pointers. I will also submit a request as well.
Thanks again!
Michael