amonks / run

Go run some tasks!
https://amonks.github.io/run/
Other
19 stars 4 forks source link

buffer interleaved output to reduce switching #136

Open jellevandenhooff opened 7 months ago

jellevandenhooff commented 7 months ago

It might be nice to buffer output a bit for interleaved tasks: If I have two concurrent running tasks (say a front-end build and back-end build, or front-end and back-end tests), and they are both running at high speed (say they're cached go tests), right now the logs will end up interleaved like AAA BBB AA BB AA BB with whitespace in between each task switch. Mentally parsing the logs is more difficult because you repeatedly have to context switch. Also, though the spacing is nice for reading, it ends up taking a lot of space than necessary. What if the printer waited a little bit (maybe 100ms, maybe somehow cleverly calculated from task runtime or previous logging behavior) after printing AAA, and if more logs came in, it would postpone outputting the B so you'd get AAAAAA BBBBB?

amonks commented 7 months ago

[splitting this into into 3 issues]

amonks commented 7 months ago

I agree that this would be helpful for readability, but I'm a bit worried that putting logs out of order could make it harder to think about causal ordering, in systems where that matters. I wonder how often that would come up.

I imagine I'm currently the heaviest run user, so I'll try to keep this in the back of my mind for a while and see if I end up with an opinion about the tradeoff.