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 : 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();
	}
};
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 !