Decided to plug in the last version of the code written before going to sleep instead of testing out the intermediate version. I've gone from a choice of correct functioning at 100% of a core or excessive latency at 12% down to both fast and correct with the new code not profiling as significant and the fan not spinning up. I'll take the win.
There were a couple things about the new code that were bugging me so I reorganized it again. Pretty sure I've gotten it down to as correct and efficient as possible, but I still need to wait until I get into the shop to test that. Hoping to see much lower CPU utilization.
Now that I've kludged around all the new issues I've been looking at and taken a good look to see which changes I could remove, I'm left with the conclusion that not my code just changed in a way that my code was not compatible with and there are things that just need to be inexplicably different to get the right behavior. I hate that conclusion, but I think I've ruled out the other possibilities.
Got an email asking me to "share my experience as a postdoctoral researcher" and while I have contributed to a number of scientific endeavors, I'm no where close to have even gotten a doctorate (I've been getting good job offers since I was like 12, my experience with formal education was not great, and I decided not to take on soul crushing student debt).
The problem with what I did seems obvious in hindsight and there's a pretty straightforward fix, but I need to be working on other areas today.
A bit of code I wrote recently in an attempt to make a program not use 100% of a CPU core ended up slowing down data propagation in such a way that everything looks like it works until you try to use it for real, at which point it quickly becomes apparent that it's become useless. I have a few ideas for how to really fix it, but for now I'll take useful operation at higher than needed CPU utilization over honestly still higher utilization than I'd like but not being useful.
Author of Typica software for coffee roasters.