> On May 20, 2016, at 9:44 AM, Jan Neumüller via swift-users 
> <swift-users@swift.org> wrote:
> 
> What advantage? Streaming IO is a pain in the ****. I never got what people 
> like at this stuff

Well for one, it abstracts away the source of the data. It could be a file, a 
TCP socket, an HTTP body, the output of another algorithm like a GZip codec, 
the output of another process. One of the big innovations of Unix was the 
ability to build small tools and chain them together using pipes.

> Even in my windows days I always used the much better memory mapped file IO. 

Memory mapping is great, but it has limitations and pitfalls.
* You can only use it on filesystems that can’t be unmounted, otherwise if the 
filesystem disconnects, accessing the memory will crash.
* It ties up a file descriptor for as long as you need to use the data. File 
descriptors are a limited resource.
* It requires having contiguous free address space equal to the size of the 
file. I have seen this cause real-world failures in 32-bit processes.
* I’m told that iOS limits the amount of memory-mapped address space an app can 
allocate, even if it’s a 64-bit process. (I have been meaning to test whether 
this is actually true.)

> Is streaming IO some kind of C/C++ sickness like macros and templates?

This isn’t a Playstation-vs-Xbox debate. The mature developer understands that 
everything has pros and cons.

—Jens
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to