【发布时间】:2012-05-06 22:54:43
【问题描述】:
在最近的 Linux 内核中,将文件或文件子集复制到另一个文件的最快方法是使用非常好的 splice 系统调用。该系统让内核(几乎)直接管理传输,而无需将数据复制到用户级内存。
现在,我有兴趣为其他系统找到类似的东西,特别是 Windows 和 BSD/MacOS X(我愿意获得一些用 Obj-C 编写的代码,以防万一存在无法访问的 API来自原始 C)。
谢谢
注意我假设 Windows 下最快的完整文件副本是CopyFile。但是只复制一个文件的范围呢?
注意我正在编写对性能敏感的代码,并且应该适用于各种大容量存储设备(即从 Android 智能手机到 NFS 安装)。当然,我愿意为不同的操作系统编写不同的实现。
注意 目前我在Linux/Android下使用splice,在BSD/Mac OS X下使用copyfile,在Windows下使用CopyFile,回退到read/@987654327 @ 用于文件中的范围。
【问题讨论】:
标签: c windows macos operating-system bsd