Previous Entry Share Next Entry
Computer term of the day
Heisenprofiling, verb: wasting unnecessary time trying to figure out why your inner loops are still running slowly after optimization, only to realize that it's because the profiler hooks are slowing it down...

  • 1
Heh. I've done that with printf-debug induced slowness...

Yaas. I wound up building my own profiler (since it really is pretty easy), and it's quite efficient in a number of ways. But when I'm trying to measure something that only takes a microsecond or two, it begins to impact the results...

A microsecond or two?

Unless you are doing HFT, it's time to say "enough" and deal with aggregates of operations.

Oh, totally. (Although this particular operation is sometimes being hit tens of thousands of times per page load, so it was worth the attention.)

Problem was, I didn't *realize* it was down to a microsecond (and indeed, the higher-level function I actually cared about was down to five microseconds), until I realized that I was now mostly measuring residual noise from the profiler. I had actually achieved an 80% speedup, but *thought* I'd only achieved 20%, because of over-measurement, and was confused by the lack of progress.

Hence, Heisenprofiling...

Years ago, with insufficient experience, I was trying to debug a device-driver problem. I used printfs. Stupid.

Eventually I created an in-memory array, updated that with integer data which corresponded to information I wanted, and that was "fast enough" to expose the issue.

Many years later, on a Connection Machine, we discovered that asking for the current day/date would bring all processors to a screeching halt while the system propagated the correct date/time to every processor. Also while trying to profile behavior and performance.

It's not easy.

  • 1

Log in

No account? Create an account