IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Exceptions : Performance en temps


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut Exceptions : Performance en temps
    Bonjour tous le monde,

    Je travail actuellement sur un projet visant à transformer une application java en c#, et je suis tombé sur un petit problème de performance.
    Mon programme java mettait 3 secondes à charger alors que mon programme c# en mettait 50!
    Après quelques test je me suis rendu compte que le problème venait de l'utilisation à répétition de lancements (et captures) d'exceptions.
    Résultat de mon test :

    try catch de 1000 exceptions en java : 15 millisecondes
    try catch de 1000 exceptions en C# : 4000 millisecondes!

    Est-ce que quelqu'un aurait une explication quand à pourquoi le mécanisme d'exception est si lent en C#? Faut-il régler le compilateur pour réduire ce temps ou quelque chose du genre?

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Salut BobbleDople je pense que la gestion des exceptions n'est pas architecturé en .NET de la même manière qu'en Java.
    Je pense que le mieux c'est de repartir d'un simple try..catch de les réecrire car je ne vois vraiment pas.
    Sans code difficile de se prononcer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Par défaut
    Je ne sais pas pourquoi c'est si lent comparé à Java, ni si il est possible de réduire ce temps, par contre je sais que ce n'est pas du tout une bonne pratique de programmation que de lever des exceptions à tout bout de champ.

    Une exception comme son nom l'indique doit être exceptionnelle, c'est à dire ne survenir que rarement et dans des circonstances imprévues. Elles ne doivent pas être utilisées dans le cadre du fonctionnement normal du programme.

    Si c'est le cas, il faut envisager de modifier le code en même temps que tu en fais le portage vers C# afin d'ajouter des tests permettant d'éviter de lever des exceptions à la chaîne.

    un lien intéressant là-dessus : Exceptions et performances

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Salut BobbleDople je pense
    Sans code difficile de se prononcer.
    pour mes tests j'ai fait un try catch tout ce qu'il y a de plus basique genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    try {
    throw new Exception
    } catch(Exception) { }
    Citation Envoyé par Ivan76
    Une exception comme son nom l'indique doit être exceptionnelle, c'est à dire ne survenir que rarement et dans des circonstances imprévues. Elles ne doivent pas être utilisées dans le cadre du fonctionnement normal du programme.
    Je suis bien d'accord, malheureusement je n'ai pas de controle sur le code java. Cependant j'en ai parlé aux développeur de l'appli qui vont enlever ca et le remplacer. En attendant je remplacé l'utilisation de ces exeption par un return (sans entré dans les detail le resultat et le meme) et mon temps de chargement passe de 50 secondes à 4!

    Citation Envoyé par Ivan76
    un lien intéressant là-dessus : Exceptions et performances
    ah merci bien pour le lien, j'ai vu quelques article sur msdn mais pas celui là
    Je pense que mon rpoblème à trouvé une solution.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Performances et temps de chargement
    Par mysticpete dans le forum Symfony
    Réponses: 3
    Dernier message: 20/03/2013, 16h37
  2. Performance et temps d'exécution
    Par nounouuuuu201186 dans le forum Langage
    Réponses: 16
    Dernier message: 01/05/2012, 07h08
  3. exceptions & performances
    Par _error404 dans le forum C++
    Réponses: 5
    Dernier message: 29/09/2011, 14h34
  4. Performance hibernate(temps d'execution)
    Par santati dans le forum Hibernate
    Réponses: 3
    Dernier message: 24/11/2009, 12h52
  5. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo