Comments
Sort by recent activity
Here's the screenshot. / comments
Here's the screenshot.
Yes, it happens every time I run the mandelbrot sample. It's always way off, but not always by the same amount. If I run the application for five seconds, sometimes it'll say 30 seconds and sometimes it'll say 300 seconds.
It also happens when I use a blank windows forms app.
I'll post a screenshot of this when I get home. / comments
Yes, it happens every time I run the mandelbrot sample. It's always way off, but not always by the same amount. If I run the application for five seconds, sometimes it'll say 30 seconds and sometim...
He can just reply here.
I've split my previous topic into two different topics.
I think that was part of the problem before. One half of my topic was addressed and the other half was not addressed at all.
So to make things more clear, both for you guys and for potential readers, I've split it into two topics. / comments
He can just reply here.
I've split my previous topic into two different topics.
I think that was part of the problem before. One half of my topic was addressed and the other half was not addressed ...
Right, I don't need to know more about your profiler. I assume your guys are smart enough to figure things out.
And that's good. Using the callbacks for function timing rather than an epilogue/prologue enables that 2-step scenario I described where the timings could nearly perfect.
I'm not saying that's the best way... I'm not a profiler writer... just a regular programmer, but it might inspire some ideas.
I wish you guys would respond to my other thread, though: http://www.red-gate.com/MessageBoard/viewtopic.php?t=1826
It's not resolved yet.
Thanks,
-- Adam / comments
Right, I don't need to know more about your profiler. I assume your guys are smart enough to figure things out.
And that's good. Using the callbacks for function timing rather than an epilogue/prol...
I'm not sure that inlining has to be disabled...
From what I know of the profiling API, the JIT will call the JITInlining method when it's about to inline a function, giving the function IDs of the two functions involved, and allowing you to instruct the JIT to not inline them. (Inlining can also be disabled with a global flag.) HRESULT JITInlining(FunctionID callerID, FunctionID calleeID,
BOOL *pfShouldInline)
It would seem that inlining can be controlled. However, I'm sure you instrument the IL or something, and instrumenting around inlined functions to properly track when they were called (in order to get correct hit counting) would be difficult or impossible.
But that difficult task doesn't seem necessary. It would still be a useful feature of the profiler if it allowed the JIT to inline functions without instrumentation. The function hit counts wouldn't be what people might expect, but the profiling results would do a better job of leading people to things that need to be optimized.
With JIT inlining disabled, people can be led to optimize the wrong things, which would show an improvement in the profiler, but no actual improvement in the release build of their application.
It's a tradeoff between correctness in timing and correctness in hit counting. The current implementation gives correct hit counting but incorrect timing. I personally would prefer to sacrifice hit counting for better timing, because timing's what's important for profiling in most applications.
This could perhaps be an option inside the profiler. I think it's better to have the option than to be stuck with one way of doing things... or if I had to be stuck, I'd prefer to be stuck with more correct timings and less correct hit counts.
Just my opinion as an evaluator of the profiler... / comments
I'm not sure that inlining has to be disabled...
From what I know of the profiling API, the JIT will call the JITInlining method when it's about to inline a function, giving the function IDs of the...
I don't think you read my message.
I ran the application for 10-15 seconds and it reported Main() taking 262 seconds.
I ran it for one second and it reported Main() taking 40 seconds.
How do you explain this? / comments
I don't think you read my message.
I ran the application for 10-15 seconds and it reported Main() taking 262 seconds.
I ran it for one second and it reported Main() taking 40 seconds.
How do you ex...
Right, but the time spent waiting for messages doesn't occur within the body of Main(). As you said, it occurs within WaitMessage(), which is probably called by Application.Run() (directly or indirectly).
Thus, I would expect the time spent waiting to show up in the time with children and not in the time excluding children.
The time excluding children for Main(), I think, should be almost nothing. It allocates an object and calls Run(). The rest of the time is spent there, inside Run() -- inside a child of Main().
So I'm not sure why the time is showing up in Main() (excluding children).
But please read my previous message and don't just reply to this one. (The message about it showing 40 seconds when I ran the application for one second.) That's the bigger issue here. / comments
Right, but the time spent waiting for messages doesn't occur within the body of Main(). As you said, it occurs within WaitMessage(), which is probably called by Application.Run() (directly or indir...
This topic has been superceded by the following two topics:
* Total seconds counts are wrong
* Time excluding children seems wrong
Go there for the continuation of this discussion. / comments
This topic has been superceded by the following two topics:
* Total seconds counts are wrong
* Time excluding children seems wrong
Go there for the continuation of this discussion.
More evidence that the timings are off, taken from the screenshot in the profiler's own help file. (The same screenshot I mentioned above.)
The time for Main() (excluding children) was listed as 70+ seconds.
Main() contains only the following code:
Application.Run(new Form1());
That took 70+ seconds, excluding children?? / comments
More evidence that the timings are off, taken from the screenshot in the profiler's own help file. (The same screenshot I mentioned above.)
The time for Main() (excluding children) was listed as 70...