phobos: What type to use instead of File when doing I/O on streams?
    Alex Parrill via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Mon Nov  9 14:02:06 PST 2015
    
    
  
On Monday, 9 November 2015 at 19:42:53 UTC, J.Frank wrote:
> On Monday, 9 November 2015 at 18:44:00 UTC, Alex Parrill wrote:
>> Ranges are streams. file.byLine(Copy) and byChunk are 
>> effectively streams that are ranges.
>
> I might be wrong, but from what I read so far I don't think 
> that "ranges are streams":
>
> - Can you read an arbitrary length of bytes from a range? 
> (Reading by line in my code was just an example.) The only way 
> I see is to make it a byte range. But then reading n bytes 
> would result in n calls to popFront(), which is out of the 
> question for performance reasons. Is this correct?
`myrange.take(array_size).array`
front/popFront are very good candidates for optimization; the 
compiler should be able to inline them, removing all of the 
overhead (GCD and LDC will likely be better at this than DMD, 
though).
> - Can you flush() a range?
>
> - Can you use select() on a range?
>
No, but you can't do either to anything other than file 
descriptors anyway (at least on Linux, dunno about Windows), so 
you may as well pass in a File.
    
    
More information about the Digitalmars-d-learn
mailing list