La meilleure optimisation que vous pouvez faire est d'utiliser de grands tampons pour la copie. Si cela ne suffit pas, restructurez vos données pour qu'elles forment un fichier unique au lieu de deux fichiers dans un répertoire. La prochaine étape consiste à obtenir un matériel plus rapide.
De nombreux systèmes de fichiers sont couramment utilisés pour Unix/Linux et vous devez écrire un algorithme de copie personnalisé pour chacun. Il y a rarement une garantie de blocs contigus pour un seul fichier, et encore moins deux. Les chances sont également bonnes que votre routine de copie de bloc contourne et soit moins efficace que les optimisations de système de fichiers existantes. Lire un fichier entier en mémoire avant de l'écrire donnera plus d'avantages en termes de minimisation des temps de recherche que l'ouverture de moins de fichiers, au moins pour les fichiers dépassant une certaine taille. Et tout le matériel ne souffre pas des temps de recherche.
Pourquoi ne pas simplement utiliser 'cp -r'? –
Je travaille sur un système distribué qui est écrit en C, et la performance est très concernée par cette littérature. –
Voulez-vous dire comme verser un pot d'eau dans un autre? –