-
Problème de performance
Bonjour à tous
Je rencontre un souci de performances assez étrange avec une appli qui utilise des winforms (appli développée avec Visual Studio Express 2008 sous Vista).
Lorsque mon PC a été démarré en étant connecté à Internet, l'appli tourne avec de bonne peformances. Mais si mon PC est démarré sans internet, le framerate est complètement instable (et comme je développe un éditeur de niveaux pour un jeu, ça devient tout simplement inutilisable).
Mon UserControl principal me restitue le framerate (il affiche le nombre d'images par seconde dans un coin, histoire de checker les performances).
Avec le net : 60 fps, impec.
Sans le net : ça oscille frénétiquement entre des valeurs comme 25, 64, 40, 10 ...
Quelques précisions :
- L'appli n'a aucune fonctionnalité qui aurait un rapport de près ou de loin avec internet ou une quelconque connexion réseau.
- Avant que j'intègre des winforms je ne rencontrais pas ce problème (c'est pourquoi je pense quil y'a peut être un rapport avec les winforms)
Du coup voila je ne comprend pas encore le lien qu'il peut y avoir entre la connexion à internet et les winforms :?
Peut être est-ce plutôt un problème lié à windows ?
Quelqu'un aurait-il des pistes sur le sujet, voir déjà rencontré des soucis de perf étranges, avec le même type de repro (avec connexion OK, sans connexion pas OK) ?
Merci beaucoup :)
-
internet ou non ne peux pas affecter les performances d'une appli .net
sans le code on ne pourras pas t'aider beaucoup dans la recherche de la cause (problème sur le code de ton appli ou sur le code qui te permet de connaitre les fps)
tu travailles sur des graphics ?
-
Pour internet ça me semble bizarre aussi, mais avec ce test j'ai une reproductibilité de mon problème à 100%.
Sinon concernant le code c'est assez délicat dans le sens ou je bosse dessus depuis maintenant 6 mois et qu'il y'en a pléthore. L'outil est à un stade bien avancé de son développement. Le truc c'est que je n'ai que récemment rencontré ce souci (lorsque j'ai dû démanager et me retrouver sans le net pendant un temps), du jour au lendemain ^^
Concernant la composition de mon interface c'est assez simple : il y'a un Form (fenêtre principale) qui englobe tout un tas d'autre Control (personalisés pour la plupart, à part pour ceux proposés dans la liste standard comme le Menu ou le StatusStrip).
Sinon j'utilise aussi beaucoup le système d'event pour notifier à mon interface divers changements qui peuvent survenir côté jeu.
Dans le Control principal l'affichage se fait via un GraphicsDevice du framework XNA. A défaut de trouver plus propre comme façon de faire, le control est redessiné en permanence suite a une invalidation à chaque fois qu'il passe en idle (Invalidate() provoque un Draw()) :
Code:
Application.Idle += delegate { Invalidate(); };
(instruction appelée dans la méthode d'initialisation du Control)
Peut être que ça vient de là ...
Est ce qu'il existe une façon plus précise/plus fiable de gérer le rafraichissement d'un Control ?
Concernant l'affichage des fps, ce n'est pas vraiment le souci. Même sans ça on sent nettement la différence à l'utilisation.
-
Je vais sans doute dire une bêtise mais bon...
Tu ne pourrais pas utiliser de BackGroundWorker?
Cela exécutera l'événement choisi en "arrière plan" et fera peut être tourné plus librement ton application.
J'espère ne pas avoir dit d'idiotie en rapport avec ton projet :oops::oops:
Carml_O
-
je suis pas expert en xna ...
sinon faire invalidate via un timer réglé à 1/50ème de seconde
-
Merci à vous deux pour vos réponse :)
Je vais continuer à creuser différentes pistes pour élucider la chose.
-
Bonjour,
Le problème sans internet vient peut-être d'une appli ou d'un service qui essaie de se connecter à internet sans succès (anti-virus, help de visual studio, ...).