[swift-users] file io in Swift 2.2 for Linux (would like to be pointed in the right direction)
Jens Alfke
jens at mooseyard.com
Fri May 20 12:16:38 CDT 2016
> On May 20, 2016, at 9:44 AM, Jan Neumüller via swift-users <swift-users at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160520/32a30231/attachment.html>
More information about the swift-users
mailing list