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