> 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