Lenteur de la fonction CopyFile() !!!

Ndmax Messages postés 13 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 18 juin 2003 - 12 juin 2003 à 09:18
Ndmax Messages postés 13 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 18 juin 2003 - 13 juin 2003 à 19:09
Slt !

J'ai fait une petite appli et j'essaie maintenant de l'optimiser..
Je me suis rendu compte que parfois, la fonction CopyFile() peut être très rapide sur un fichier de plusieurs Méga, et d'autres fois pour le même fichier, au même moment du programme, il va mettre au moins 5 s de plus !!!
Comme je l'utilise plusieurs fois dans mon appli, c'est assez ennuyant car parfois je peux avoir un écart de 15 à 20 s pour le même résultat !!!
J'essaie de faire le plus rapide et fiable possible.

Pouvez-vous me conseiller ?
Merci.

4 réponses

cs_Bestiol Messages postés 833 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 3 novembre 2005 1
12 juin 2003 à 11:03
Peut-être en essayant une autre fonction ?!

Je propose ça comme ça... Car en fait, c'est peut-être tout simplement par rapport à l'occupation de ton système, que la fonction prend plus ou moins de temps !

Tu peux créer ta propre fonction de copie avec BlockRead BlockWrite, ou utiliser deux Sream et la méthode CopyFrom !

Ce sont différentes solutions, mais je ne sais pas si elles seront plus rapides...

Bonne prog' !
[mailto:bestiol@cario.fr Bestiol.]
0
Ndmax Messages postés 13 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 18 juin 2003
13 juin 2003 à 09:06
Oui, désolé de ne répondre seulement maintenant.. mais y'avait des pb avec mon identification sur le site... !! ??

J'ai donc bien utilisé la méthode par blocs, même avant que je ne vois ta réponse.
Je l'ai testée dans la foulée, et je peux te donner le résultat de mes tests :

-> Pour copier un fichier de 10 Mo !!!

CopyFile --> 35s (4x)

TFileStream --> 18s (3x)

Block --> 4s (1x)
--> 3s (1x)
--> 2s (5x)

(nb de fois que le résultat a été obtenu)

Donc on voit bien tout de suite la rapidité de cette méthode, que j'avais apprise en m'auto-formant à Delphi, mais je ne pensais pas qu'elle était si rapide !!!

Merci de ta réponse.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
13 juin 2003 à 13:27
Ok, bravo pour les tests mais as-tu essayé avec différentes tailles de buffers dans les méthodes BlockRead et BlockWrite ?

May Delphi be with you
0
Ndmax Messages postés 13 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 18 juin 2003
13 juin 2003 à 19:09
Et bien écoute, comme ct "presque" instantané et que les fichiers que j'aurais à copier seront normalement inférieurs à cette taille, je n'ai pas testé ;)
Mais j'essaierai qd même !
Y a-t-il une limite comme taille de buffer ?
Et on peut récupérer la mémoire réservée par le buffer comment ??
Merci.
0
Rejoignez-nous