В последних ядрах Linux, на самом деле, самый быстрый способ скопировать файл или подмножество файла в другой файл — это использовать очень хороший системный вызов splice
. Эта система позволяет ядру управлять передачей (почти )напрямую, без необходимости копировать данные в пользовательскую память.
Теперь мне было бы интересно найти что-то подобное для других систем, в частности для Windows и BSD/MacOS X. (Я готов написать код на Obj. -C в маловероятном случае наличия API к которому нельзя получить доступ из необработанного C ).
Спасибо
Примечание Я предполагаю, что самая быстрая полная -копия файла под Windows CopyFile
. Но как насчет копирования только диапазона файла?
Примечание Я работаю над кодом, который одновременно -чувствителен к производительности и должен работать на различных запоминающих устройствах (, т. е. от смартфонов Android до устройств NFS ). Я, конечно, готов написать разные реализации для разных ОС.
Примечание В настоящее время я использую splice
под Linux/Android, copyfile
под BSD/Mac OS X, CopyFile
под Windows и откат к read
/ write
для диапазонов в файлы.