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 :
La différence n'est pas négligeable... Pour mon test, la version rapide met 126 ms et la version lente 143 ms
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } };
Des idées de pourquoi ?
Merci d'avance !![]()
Partager