On Tuesday, 26 March 2013 at 07:45:34 UTC, Walter Bright wrote:
On 3/25/2013 10:16 PM, deadalnix wrote:
You can still stop the thread, gather the data you are interested in, and doing the whole process while resuming the application, which leverage concurrency.

The obvious difficulty with that is when the app is posting data to the profiling thread faster than the latter can process it.

That's not how polling profilers work.

Polling profilers do not run alien code in the programs' thread. Thus, the program thread is not posting anything to the profiling thread.

I'm repeating myself, but: they work by having the profiler thread/process periodically pause the program thread, record its state, resume it, then analyze/store the collected data, and sleep a bit before taking another sample.

Even when the overhead of a polling profiler is higher, it has the qualifying difference in that the performance overhead does not skew the execution times of particular parts of a program as much as an instrumenting profiler. That is, while an instrumenting profiler makes some parts of the program much slower than others, a polling profiler should make the whole program about equally slower.

Reply via email to