最近の Linux カーネルでは、ファイルまたはファイルのサブセットを別のファイルにコピーする最速の方法は、非常に優れたspliceシステム コールを使用することです。このシステムは、データをユーザーランドのメモリにコピーすることなく、カーネルに (ほぼ) 直接転送を管理させます。
今、私は他のシステム、特に Windows と BSD/MacOS X で同様のものを見つけることに興味があります (未加工の C からアクセスできない API がある可能性は低いので、Obj-C で書かれたコードを入手したいと思っています)。 )。
ありがとう
注Windows での最速のフル ファイル コピーはCopyFile. しかし、ファイルの範囲だけをコピーする場合はどうでしょうか?
注: 私は、パフォーマンスに敏感で、さまざまな大容量ストレージ デバイス (つまり、Android スマートフォンから NFS マウントまで) で動作するはずのコードに取り組んでいます。もちろん、私はさまざまな OS 用にさまざまな実装を喜んで作成します。
注:現時点では、spliceLinux/Android、copyfileBSD/Mac OS X、CopyFileWindows で使用し、ファイル内の範囲に対してread/にフォールバックします。write