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.