Benchmark: timing 100 iterations of html, join, local, manual...
html: 46 wallclock secs (45.58 usr + 0.05 sys = 45.63 CPU) @ 2.19/s (n=100)
join: 220 wallclock secs (219.65 usr + 0.07 sys = 219.72 CPU) @ 0.46/s (n=100)
local: 221 wallclock secs (220.61 usr + 0.14 sys = 220.75 CPU) @ 0.45/s (n=100)
manual: 866 wallclock secs (864.92 usr + 0.26 sys = 865.18 CPU) @ 0.12/s (n=100)