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 :

Différence de performances dans l'appel d'une fonction virtuelle


Sujet :

C++

  1. #21
    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
    Citation Envoyé par coda_blank Voir le message
    pourquoi le compilateur crée-t-il cette différence ?
    Appel de fonctions versus appels de methode virtuelles, la deuxieme necessite une indirection de plus comme dit precedemment, ce qui se traduit par un saut indirect via une table d'adresse.

  2. #22
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Citation Envoyé par Lightness1024 Voir le message
    @Emmanuel : wa, sympa la méthode. ca marche aussi dans une machine virtuelle je suppose ?
    Je pense que non car tu es alors soumis au scheduler de l'OS hôte, que la machine virtuelle ne peut pas voir...

  3. #23
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Par défaut
    hmm, parce que les timers haute precision mesure le total real time et pas le total cpu time c'est ca ? comment ça marche d'ailleurs c'est un registre special dans le CPU ?

  4. #24
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Lightness1024 Voir le message
    hmm, parce que les timers haute precision mesure le total real time et pas le total cpu time c'est ca ? comment ça marche d'ailleurs c'est un registre special dans le CPU ?
    Ca peut marcher de plein de manière différentes - basé sur des IT ou non (CONFIG_NO_HZ, si je ne me trompe pas), en comptant les cycles cpu, etc.

    Ce n'est toutefois pas un problème de timer. Lorsqu'on fait tourner un kernel RT dans une machine virtuelle, ce kernel est dépendant de l'architecture sous-jacente. Si le processeur accepte la virtualisation hardware, il lui faut quand même du temps (non contrôlé par l'OS gues, mais par l'OS host) pour passer dans le mode Ring-0 émulé. Dans le cas où la virtualisation hardware n'est pas implémentée, inutile d'aller plus loin : les instructions kernel qui doivent s'exécuter en Ring-0 sont émulées (et là, la notion de performance ne veut plus rien dire).

    Au delà de ça, le RT ne peut s'atteindre que si tous les composants de la chaine sont au courant qu'on fait tu temps réel. Problème : l'OS hôte ne sait pas que l'OS guest est un OS RT, donc le logiciel de virtualisation est soumis aux contraintes classiques d'un programme userspace normal (et s'exécute sur un scheduler normal). Dans ces conditions, en comprennant bien que l'OS client RT peut être intérrompu à tout moment par l'OS hote non RT, et que c'est l'OS hote non RT qui rend la main à l'OS client quand il le souhaite, on conçoit facilement qu'aucune contrainte temps réel ne peut être tenue par l'OS virtualisé.

    Ceci dit, si tu es sur Debian (je suis sous wheezy/sid), tu as un package kernel PREEMPTRT (3.0.0-1-rt) que tu peux installer en lieu et place de ton kernel courant. Si tu es sur une autre distro, je ne sais pas si c'est possible.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  5. #25
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Par défaut
    je vois je vois, et je m'en doutais bien.
    mais j'aurais cru que selon ce que voyais le timer, ca pouvait marcher quand meme:
    en effet si on imagine que lorsque l'OS client est déschédulé, le timer ne voit pas le trou temporel jusqu'au prochain scheduling, ca pourrait tres bien faire l'affiare, voyez vous ?
    donc c'est pour ca que je focalise sur ce "timer" et que je trouve que c'est effectivement un problème de timer. si le timer lisait une valeur qui se "freeze" lorsque l'OS client est deschedulé, ca marcherait quelque soit le kernel hôte.
    non ?

  6. #26
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Lightness1024 Voir le message
    je vois je vois, et je m'en doutais bien.
    mais j'aurais cru que selon ce que voyais le timer, ca pouvait marcher quand meme:
    en effet si on imagine que lorsque l'OS client est déschédulé, le timer ne voit pas le trou temporel jusqu'au prochain scheduling, ca pourrait tres bien faire l'affiare, voyez vous ?
    donc c'est pour ca que je focalise sur ce "timer" et que je trouve que c'est effectivement un problème de timer. si le timer lisait une valeur qui se "freeze" lorsque l'OS client est deschedulé, ca marcherait quelque soit le kernel hôte.
    non ?
    Dans ce cas là, l'OS guest ne pourrait jamais être à l'heure
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Par défaut
    oui absolument. et les applis temps réel tournerait un peu ralenties, ou lagguées. mais ca pourrait etre une option de la machine virtuelle.

  8. #28
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par Lightness1024 Voir le message
    oui absolument. et les applis temps réel tournerait un peu ralenties, ou lagguées. mais ca pourrait etre une option de la machine virtuelle.
    Quel intérêt ? Une appli TR ne joue jamais toute seule : elle dialogue avec quelque chose (matériel, serveur distant, n'importe quoi en fait ; certains protocoles de communication nécessite des temps de réponse maximum définis (je pense au protocole qui permet de gérer les FAX, par exemple)), et c'est ce quelque chose qui a besoin d'avoir des temps de réponse définis et sûr. A moins d'émuler la fonctionnalité traitée, ce qui multiplie le travail, ce n'est pas viable.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  9. #29
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Par défaut
    ok. donc conclusion des courses, kernel RT = natif . fin du semi hors sujet

Discussions similaires

  1. Espace dans l'appel d'une fonction
    Par pierre50 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/12/2007, 12h19
  2. Variable en option dans l'appel d'une fonction
    Par xian21 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/11/2007, 16h13
  3. Réponses: 4
    Dernier message: 30/08/2007, 19h08
  4. [PHP-JS] Variable PHP comme argument dans l'appel d'une fonction Javascript
    Par The Molo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2007, 10h00
  5. pb dans l'appel d'une fonction
    Par badboys206s16 dans le forum ASP
    Réponses: 3
    Dernier message: 04/07/2006, 09h32

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