2010-09-20 6 views
2

Je recompile un ancien programme Delphi (à partir de Delphi 2007) dans (Delphi 2010). Le code est absolument inchangé et il se compile bien. La partie clé du programme est l'utilisation de CopyFileExW pour copier certains fichiers. Tout fonctionne bien et Dandy, cependant, il y a d'étranges problèmes de performance que je n'arrive pas à comprendre d'où ils viennent.Problème de performance étrange

Lors de la copie à partir d'un ordinateur client à un serveur Windows, le suivant se produit:

  • Version compilé avec D2007
  • de XP à Windows Server 2003, la performance Copie OK
  • de XP vers Windows Server 2008 Copier les performances OK
  • De Windows 7 à Windows Server 2003, Copier les performances OK
  • De Windows 7 à Windows Server 2008 Copier les performances OK

  • Version compilé avec Delphi 2010

  • de XP à Windows Server 2003, la performance Copie OK
  • de XP vers Windows Server 2008 performances Copie OK
  • De Windows 7 à Windows Server 2003, la performance Copie OK
  • de Windows 7 au serveur Windows 2008 performances Copie EXTRÊMEMENT LENT

Je peux comprendre que peut-être il y a un problème betwe dans le serveur 2008 et W7, comme la compression différentielle à distance ou autre (quel BTW est désactivé), mais pourquoi la version compilée avec 2007 n'a pas le même problème? Des suppositions?

+0

Avez-vous essayé de le profiler? Tout profileur décent devrait être en mesure de localiser le problème à une procédure spécifique pour l'installation problématique. Sans profilage, il n'y a pas de moyen sûr de le savoir vraiment lié à CopyFileExW. –

+1

Peut-être que c'est un logiciel anti-virus en considérant la version compilée D2010 suspectes et surveille toutes les écritures de disque? Essayez de désactiver temporairement votre logiciel anti-virus. –

+2

Pouvez-vous fournir un exemple de code sur la façon dont vous copiez les fichiers? (Oui, vous spécifiez 'CopyFileExW', mais vous n'indiquez pas comment vous appelez cela, par exemple avec le type de paramètres ou les conversions de chaîne). –

Répondre

2

Quelques idées de causes possibles:

  • logiciel antivirus sur le côté WS2008 penser que le transfert des vérifications suspectes et de faire (comme déjà indiqué dans les commentaires).

  • Une conversion de chaîne implicite peut éventuellement se produire.

+0

C'était tout. Symantec AV. L'exclusion de la destination a fonctionné comme un charme. – Lobuno

-1

Étant donné que vous êtes en train de mettre à jour un programme à exécuter sur Delphi 2010, vous devriez probablement aller à Delphi XE et commencer à y résoudre des problèmes. Il est livré avec un profiler intégré et vous arrivez à travailler avec les dernières nouveautés.

+0

Notez que le profileur intégré dans XE est une version «légère» et AFAIK, ne pas profiler vers le numéro de ligne de code source spécifique. – RobertFrank