J'ai un fichier d'environ 7 Mo qui enregistre sur mon partage local en quelques secondes. Toutefois, l'enregistrement de ce fichier sur un emplacement réseau prend minutes. Je me demande ce que je peux faire pour accélérer cela. Voici mes options actuelles:Enregistrement d'un fichier sur le réseau
- Enregistrer les données dans un fichier temporaire sur la machine locale, puis copiez le fichier temporaire sur le chemin réseau. Je vais probablement le faire car c'est le plus facile et le plus rentable pour l'argent.
- Utiliser
SetFilePointerEx()
etSetEndOfFile()
. J'ai pensé que cela pourrait être utile basé sur la réponse à cette question: Creating big file on Windows - Le tampon écrit. Je pourrais mettre en cache les données d'écriture moi-même et vider quand le tampon est plein, mais cela ne serait-il pas redondant avec la mise en cache qui est déjà faite par le système d'exploitation?
# 1 semble être la meilleure option, mais je me demande si quelqu'un a des conseils sur une meilleure façon d'accélérer l'enregistrement sur les chemins réseau?
Modifier: Le réseau est sur un réseau local gigabit, la vitesse ne devrait donc pas poser de problème. La copie du fichier sur le chemin réseau prend environ 1 seconde. Je viens juste de noter que nous appelons WriteFile() sur des blocs de données plus petits que nous devrions probablement, ainsi optimiser le code de plus haut niveau pour écrire des morceaux plus gros aidera probablement, mais la différence de vitesse est toujours si importante .
Si la copie du fichier prend une seconde, alors peut-être vous devriez utiliser les fonctions CopyFile ou CopyFileEx, ou, invoquer la commande de copie. – ChrisW