I’m not sure about the answer to your question but I would think that with some tweaking approach #2 would be the fastest. Have you checked what chunk size IO.stream uses internally with the :line
option (assuming it is using chunking internally)?
Also do you have a sample test harness that could be used to experiment with these approaches?