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

Langage C++ Discussion :

Méthodes virtuelles pour applications temps-réel


Sujet :

Langage C++

  1. #1
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut Méthodes virtuelles pour applications temps-réel
    Bonjour.

    Pourquoi est-il conseillé d'éviter l'héritage virtueles méthodes virtuelles dans une appli temps-réel.

    J'ai cru comprendre que les pointeurs vers les méthodes étaient stockés dans un tableau et que pour une instance d'une classe qui hérite de méthodes virtuelles, l'offset de ces méthodes serait constant... Donc je ne vois pas l'incertitude que pourrait apporter l'appel de méthodes virtuelles...

    Merci pour vos explications.

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Je te conseille la lecture de http://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf

    Mais je ne vois pas non plus de problèmes a priori, tant que tu évites les casts.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 145
    Billets dans le blog
    4
    Par défaut
    Peut-être pour l'ajout d'indirection, mais ça reste minime en perte de perf amha, ou en tous cas pas la priorité à "optimiser".
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Peut-être pour l'ajout d'indirection, mais ça reste minime en perte de perf amha, ou en tous cas pas la priorité à "optimiser".
    C’est l’argument courrament employé, mais effectivement, c’est un peu léger. À noter que du polymorphisme statique peut lui souvent être employé.

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Par rapport au coût de l'indirection d'un appel virtuel de fonction (le post initial parle aussi d'héritage virtuel, ce qui n'a rien à voir, mais je pense qu'effectivement, le question concerne bien les appels de fonction virtuelles) :
    • Cette indirection est de coût constant, ce qui, plus que le coût en tant que tel, est important dans le temps réel dur
    • N'est pas à mettre en parallèle avec le coût d'un appel de fonction non virtuel, mais plutôt avec le coût d'un if/switch suivi d'un appel de fonction non virtuel. Il ne faut pas oublier qu'un appel de fonction virtuelle est avant tout un mécanisme de choix, et que si on décide de s'en passer, il faudra quand même que le choix soit présent, mais écrit sous une autre forme.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    [*]N'est pas à mettre en parallèle avec le coût d'un appel de fonction non virtuel, mais plutôt avec le coût d'un if/switch suivi d'un appel de fonction non virtuel. Il ne faut pas oublier qu'un appel de fonction virtuelle est avant tout un mécanisme de choix, et que si on décide de s'en passer, il faudra quand même que le choix soit présent, mais écrit sous une autre forme.[/LIST]
    Effectivement je parlais bien de méthodes virtuelles.

    Merci pour vos avis, vous semblez partager mon opinion.

    Vivement que je croise à nouveaux quelqu'un qui bannisse les méthodes virtuelles pour lui demander plus de justifications (mais j'ai des doutes qu'elles soient valables).

    Merci pour le lien vers le rapport, cela me semble une bonne source.

  7. #7
    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
    De manière générale, quelqu'un qui utilise "toujours" un outil et/ou "jamais" un autre outil est quelqu'un qui ne comprends pas la notion d'outil.

    Il faut se méfier de ce genre de pratique extremiste.


    J'inclus goto dans ce que je viens de dire.

Discussions similaires

  1. exemple d'application temps réel à but pédagogique
    Par christianf dans le forum Robotique
    Réponses: 3
    Dernier message: 19/11/2008, 20h44
  2. Application Temps réel ASP.NET
    Par malayika dans le forum ASP.NET
    Réponses: 8
    Dernier message: 23/09/2008, 19h10
  3. [Java]Solutions graphiques pour jeu temps réel (titre édité)
    Par Zeil dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 18/03/2006, 05h53
  4. SGBDR pour jeu temps réel ?
    Par vmolines dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 20/07/2005, 16h17

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