Performance surprise: My bourne shell redo implementation takes around
twice the time of apenwarr's Python implementation for returning from a
dependency check for up to date builds while using far fewer resources.
I therefore do recommend to use this version instead of apenwarr's do.
For testing, I repeatedly built a roguelike a friend of mine wrote in C
with both implementations: <
https://github.com/plomlompom/plomrogue>
Data:
• redo-targets reports 33 targets
• redo-sources reports 127 sources
• a target has, on average, 37 dependencies
• build check time with apenwarr redo: 0.2s on Thinkpad T60
• build check time with my redo implementation: 0.44s on Thinkpad T60
For comparison, the full build takes over 10.5 seconds on Thinkpad T60.
I stopped optimizing my implementation when I got to execution times of
under half a second for the plomrogue test case. The bottleneck of my
redo implementation seems to be interprocess messaging. According to
strace, it spends 99,99% of time in wait4(2) and 0,01% in read(2).