OVH Cloud OVH Cloud

SHFileOperation

4 réponses
Avatar
Pierre-e Gougelet
Bonjour,

Est t'il normal que SHFileOperation soit plus de 10 fois plus lente que des multiples MoveFile ou CopyFile?

Il semblerait que je ne soit pas le seul à la trouver lente...

Merci. Pierre

4 réponses

Avatar
Dominique Vaufreydaz
Bonjour,

Est t'il normal que SHFileOperation soit plus de 10 fois plus lente
que des multiples MoveFile ou CopyFile? Il semblerait que je ne soit pas le seul à la trouver lente...



Je dirais que oui. Elle doit se mettre dans un contexte a la noix
genre un contexte de fonctionnement ou elle lance un explorer
(ou une sous partie de celui-ci via 40 DLL) pour faire une operation simplissime...
Dans la meme idée, tu peux automatiser word pour ouvrir un fichier et le resauvegarder
ailleurs, ca rame plus que de faire une bete copie binaire. Mais y'a d'autres
mecanismes qui sont mis en jeux et qui peuvent etres utiles dans des cas
precis.

perso, fopen and co repondent generalement mieux a mes attentes.
L'avantage de SHFileOperation c'est sa genericite...

Un choix a faire en fonction des besoins.

Juste mon avis. Doms.
Avatar
Christian ASTOR
Pierre-e Gougelet wrote:

Est t'il normal que SHFileOperation soit plus de 10 fois plus lente que
des multiples MoveFile ou CopyFile?



Plus lent, oui, 10 fois, non, bien que SHFileOperation fasse forcément
quelques traitements en plus
(creation thread pour dlg si pas FOF_SILENT, traitement FOF_ALLOWUNDO,
appel SetThreadExecutionState(), CreateEvent() pour copie/déplacement,
tests sur destination, ...)
mais utilise au final MoveFile(), CopyFileEx() ou DeleteFile()
Avatar
Pierre-e Gougelet
>> Est t'il normal que SHFileOperation soit plus de 10 fois plus lente
que des multiples MoveFile ou CopyFile?



Plus lent, oui, 10 fois, non, bien que SHFileOperation fasse forcément
quelques traitements en plus
(creation thread pour dlg si pas FOF_SILENT, traitement FOF_ALLOWUNDO,
appel SetThreadExecutionState(), CreateEvent() pour copie/déplacement,
tests sur destination, ...)
mais utilise au final MoveFile(), CopyFileEx() ou DeleteFile()



Je suis en FOF_SILENT, et par exemple, le fait de faire 100 fois SHFileOperation n'a rien à voir avec le meme appel CopyFile :-( au niveau temps...

Pierre
Avatar
Christian ASTOR
Pierre-e Gougelet wrote:

Je suis en FOF_SILENT, et par exemple, le fait de faire 100 fois
SHFileOperation n'a rien à voir avec le meme appel CopyFile :-( au
niveau temps...



Si on fait 100 fois ce que fait SHFileOperation(), là ça devient plus
logique (rien que les security descriptor sur un CreateEvent()...)
Mais SHFileOperation(), on ne l'appelle qu'une fois.