Hi nicolas I like your proposal.
Stef On Thu, Mar 29, 2018 at 5:44 PM, Nicolas Cellier <[email protected]> wrote: > There are two different questions: > - expressiveness > - efficiency > > Real efficiency of transfer (without any intermediate copy) is only > guaranteed in very rare cases > (if the target collection of write stream is same species as source > collection of read stream, and there are no transform in any of the > intermediate wrapper streams, then a direct bulk transfer of the form > targetCollection replaceFrom:to:with: sourceCollection startingAt: is > possible) > I'm not at all convinced that we should focus too much on such optimization. > > The fact that we have at least two choices, let the readStream drive the > operation, or let the writeStream do it, is a smell. > It sounds like we could provide the two: > aReadStream writeContentsTo: aWriteStream. > aWriteStream readContentsFrom: aReadStream. > ... and then let the programmer decide (maybe there is a more optimal path). > ... or provide a way to negotiate the transfer (size of chunked buffers, > etc...) > > Unless there is a more symetrical solution. > It's a long time since I did not check Xtreams, but wasn't there a reified > Buffer that could/would be the effective actor of such transfer? > > Nicolas > > > 2018-03-29 15:02 GMT+02:00 Denis Kudriashov <[email protected]>: >> >> 2018-03-29 14:40 GMT+02:00 Sven Van Caekenberghe <[email protected]>: >>> >>> >>> >>> > On 29 Mar 2018, at 14:34, Denis Kudriashov <[email protected]> >>> > wrote: >>> > >>> > >>> > 2018-03-29 11:45 GMT+02:00 Sven Van Caekenberghe <[email protected]>: >>> > ZnUtils class>>#streamFrom:to: ? >>> > >>> > Yes, it gives feature which I want. But it's too Java style. >>> > What you think to move it to stream itself? And with what message name? >>> >>> This was written in a specific context, to be efficient. I don't know if >>> it is general enough for broad use. Yes it could be more OO to not make it a >>> utility method, but on the other hand, where would you put it ? >> >> >> In read streams we already have: >> >> >> readInto: aCollection startingAt: startIndex count: n >> >> >> So I would put new method in ReadStream (#readIntoStream: ?). >> >>> >>> I am hesitant to make the Stream API bigger ;-) >> >> >> We already have this method in Utils class. So it is here but in strange >> hidden place. >> >>> >>> > > On 29 Mar 2018, at 11:22, Denis Kudriashov <[email protected]> >>> > > wrote: >>> > > >>> > > Hi. >>> > > >>> > > Do we have simple method to write data between streams? >>> > > >>> > > I want something like: >>> > > >>> > > writeStream nextPutAllFrom: readStream >>> > > >>> > > I always used loop for this. But maybe we have something suitable. >>> > > Otherwise lets introduce it. >>> > > >>> > > Best regards, >>> > > Denis >>> > >>> > >>> > >>> >>> >> >
