Coût pour appeler des méthodes de sa classe mère ?
Bonjour,
En essayant d'optimiser une classe et notamment une de ces méthodes, j'ai créé une classe dérivée dans laquelle j'override la méthode en question. Je me suis rendu compte, mesures à l'appui, que si ma fonction redéfinie rappelle directement la méthode parente, elle est plus rapide que si je copie-colle le corps de la méthode de base dans celui de la dérivée. En gros, ça donne quelque chose comme ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Base {
public:
virtual void flush() {
for(...)
doStuff();
}
protected:
void doStuff() {
// stuff
}
};
class Derived : public Base {
public:
// Plus rapide
void flush() override {
Base::flush();
}
// Plus lente
void flush() override {
for(...)
doStuff();
}
}; |
La différence n'est pas négligeable... Pour mon test, la version rapide met 126 ms et la version lente 143 ms :?
Des idées de pourquoi ?
Merci d'avance ! :ccool: