Pourquoi la surchage a-t-elle si mauvaise réputation ? - C++ - Programmation
Marsh Posté le 10-10-2004 à 01:59:21
ben y a que les cons qui disent ça. Y a toujours des cons pour pas comprendre. Les gens familiers du C++ comprennent bien que la virtualité implique un traitement supplémentaire. Mais y aura toujours des abrutis qui font de la branlette intellectuelle.
Cela dit : si tu vires les virtual, magique, le compilateur génère un return 0 est rien d'autres
Marsh Posté le 10-10-2004 à 09:38:11
Taz a écrit : ben y a que les cons qui disent ça. Y a toujours des cons pour pas comprendre. Les gens familiers du C++ comprennent bien que la virtualité implique un traitement supplémentaire. Mais y aura toujours des abrutis qui font de la branlette intellectuelle. |
Ces cons la si on les ecoutés, faudriat faire du C avec des cout et basta :|
le virtual comme le template c'ets bien quand on en sert correctement point.
Les onanistes du bulbe sont peut-etre juste un gros tas de mauvais codeur.
Marsh Posté le 10-10-2004 à 09:43:47
Citation : Ces cons la si on les ecoutés, faudriat faire du C avec des cout et basta :| |
les cout c'est pas du C
Marsh Posté le 10-10-2004 à 10:31:26
Masklinn a écrit :
|
il veut dire que ces cons en question font du c avec des cout en guise de c++
Marsh Posté le 10-10-2004 à 11:03:19
cris56 a écrit : il veut dire que ces cons en question font du c avec des cout en guise de c++ |
Ah oui, du C++ avec des malloc quoi
Marsh Posté le 10-10-2004 à 01:43:57
Bonsoir bonsoir.
Bin alors je lis partout: le C++ peut être quasi aussi rapide que du C si on évite la ligature dynamique, telle lib dit: on a pas utilisé l'héritage virtuel pour éviter la chute de perfs, etc...
Alors moi je me suis posé la question: pourquoi c'est réputé si lent ?
Test:
(je sais y'a pas de return dans main mais c pas la question)
Après compilation avec les 4 virtual, sous vc7.1 en mode debug sans optimisations, on obtient pour main:
En virant les 4 virtual:
Moi les différences que je vois sont:
- appel d'un constructeur de Fils, qui appelle un constructeur de Parent en virtual, ce qui n'est pas fait en non virtual. Vlà le code du constructeur de Fils au cas où on me le demande:
- un appel des fonctions via un offset depuis this, et une écriture d'ecx 2 fois pareil... donc une inutile.
Soit au coût de l'appel, 2 mov en plus et un call indirect, ce qui devrait pas faire plus de 3-4 cycles en plus par appel, ce que je trouve super négligeable comparé au temps d'exécution d'une fonction normalement longue/complexe... Je vois pas trop la différence avec utiliser un pointeur de fonction en C, qui serait le moyen que j'utiliserais normalement pour remplacer ces virtual.
Quelqu'un peut m'expliquer pourquoi on dit que c'est lent alors ?
Merci !