On Wednesday 13 November 2024 at 12:02:12 UTC Jason E. Aten wrote:

> I've tried but this unfortunately, the Start and Stop processes are too 
expensive and really require writing to a different file for every stop. 
The nature of the program means I need to do the Start/Stop process 60+ 
times per second, so it would generate a lot of files and be very slow on 
top.

Note that the StartCPUProfile call takes an io.Writer. Therefore a simple 
*bytes.Buffer suffices. No files need be created. You can be much faster 
than the file system.


Yes. I've tried that too. But it's the call to StopCPUProfile() which takes 
a lot of time. Using a bytes.Buffer it takes over 200ms to complete. It's 
not much quicker than using a os.File as the writer implementation.

My deadline for everything is less than 16ms so the 'pausing' process needs 
to take a lot less time than that.

I could maybe live with the delay for benchmarking purposes but I'm also 
left with the problem of "concatenated profiles". pprof doesn't support 
that. If it did or if there was a way of post-processing the concatenated 
profiles into one profile that might be a satisfactory outcome.
 

> func StartCPUProfile(w io.Writer) error

Writing a benchmark for your subsystem is the hardest mentally, but most 
likely the best choice for the long term.


You're absolutely right of course. But I was hoping for a mechanism that 
could be activated when a user detects a problem with their own input data. 
That might still be possible but I'll have to give it some thought.

Thanks for the reply!

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/cd406d0c-c281-4e8f-99ac-6ffb5b3a16efn%40googlegroups.com.

Reply via email to