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 :

Performances des exceptions C++ [Tutoriel]


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 058
    Billets dans le blog
    142
    Par défaut Performances des exceptions C++
    Bonjour à tous,

    Je vous présente une nouvelle traduction de l'article de Vlad Lazarenko discutant des performances des exceptions en C++. Souvent, lorsque l'on écrit du code, on se demande l'impact des exceptions sur les performances de notre programme. Cet article apporte donc des éléments de réponse détaillés à cette question.

    Performances des exceptions C++

    Avez-vous évité d'utiliser des exceptions pour préserver les performances ?
    Dans quel cas avez vous pris cette décision ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Il me semble avoir lu l'article auparavant mais le liens dans la page française n'a pas l'air de fonctionner (http://lazarenko.me/tips-and-tricks/...nd-performance) - mais peut être qu'il y a un problem d'ici, je suis au Japon.

    Sinon, comme quasiment tout le monde dans les discussions, il ignore complètement le cas ou on desactive les exceptions et qu'on ne fais aucune verification d'erreur (on compte sur des tests massifs avant publication).

  3. #3
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    L'exemple du divisé est un peu bancale. Si un precondition est violé, c'est plutot une assertion qui devrait etre levée.

  4. #4
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonsoir,

    tout d'abord merci pour la traduction!

    Dans le billet, l'auteur évoque une gestion sans coût des exceptions mais ne semble pas la décrire. De quoi s'agit-il?

    @Joel F : je n'ai pas compris pourquoi une assertion devrait être levée dans le cas particulier du divide. Cela ne va-t-il pas interrompre prématurément le déroulement du programme si on fait cela?

  5. #5
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonsoir,

    tout d'abord merci pour la traduction!

    Dans le billet, l'auteur évoque une gestion sans coût des exceptions mais ne semble pas la décrire. De quoi s'agit-il?
    En fait, c'est la méthode qu'utilisent les compilateurs. La méthode zero-cost et la méthode setjmp/longjmp sont juste deux façons pour le compilateur de compiler les exceptions, en fait.

    Citation Envoyé par Aleph69 Voir le message
    @Joel F : je n'ai pas compris pourquoi une assertion devrait être levée dans le cas particulier du divide. Cela ne va-t-il pas interrompre prématurément le déroulement du programme si on fait cela?
    En fait, Joel expliquait que si on appelle divide avec un dénominateur de zéro, alors l'erreur vient du dév', et donc qu'il n'est pas gênant de tout faire crasher.
    Pour lui faire plaisir, on pourrait appeler la fonction divide_protected ; ou quelque chose du genre.

  6. #6
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Citation Envoyé par Ekleog Voir le message
    En fait, c'est la méthode qu'utilisent les compilateurs. La méthode zero-cost et la méthode setjmp/longjmp sont juste deux façons pour le compilateur de compiler les exceptions, en fait.
    Ah oui, effectivement c'est précisé dans le billet.
    Y a-t-il un moyen de tester le choix fait par le compilateur?
    Que font gcc et le compilateur de visual?

    Citation Envoyé par Ekleog Voir le message
    En fait, Joel expliquait que si on appelle divide avec un dénominateur de zéro, alors l'erreur vient du dév', et donc qu'il n'est pas gênant de tout faire crasher.
    Pour lui faire plaisir, on pourrait appeler la fonction divide_protected ; ou quelque chose du genre.
    Je ne suis pas tout à fait sûr de cela. La division par zéro pour des flottants n'est pas forcément une erreur de développeur, elle apparaît dans plein de méthodes numériques, et je ne pourrais pas prétendre que ce n'est pas le cas non plus pour des entiers. Qu'est-ce qui t'amène à penser cela?

Discussions similaires

  1. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  2. Performance des vertex array
    Par Mathieu.J dans le forum OpenGL
    Réponses: 13
    Dernier message: 25/06/2004, 10h47
  3. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  4. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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