Dites que je veux utiliser une fonction pour mesurer le temps d'exécution, je veux éviter que le compilateur n'optimise les expressions simplement parce qu'il pense qu'elles ne font rien (elles ne font rien, sauf que je veux mesurer le temps qu'elles mettent à calculer). Au lieu de faire des astuces bizarres comme les ajouter dans une autre variable, j'ai découvert __atribute__((optimize(0)))
dans GCC. Cependant, disons que j'ai ce code :
__attribute__((optimize(0))) void test(int n) {
while (n--) {
foo();
}
}
int main() {
std::cout << Timer::measure(test).count() << "ms\n";
}
L'attribut empêcherait-il le compilateur d'optimiser le code à l'intérieur de la fonction foo() également ? Je veux vraiment juste tester quelques temps d'exécution et empêcher de manière fiable et relativement facile le compilateur de supprimer complètement le code (je veux qu'il optimise le code autant qu'il le peut, mais ne le supprime pas parce qu'il ne fait rien !).
Cela a-t-il un sens ? Merci d'avance !