This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
td9:part2 [2021/11/06 15:23] bmonsuez [Question n°3] |
td9:part2 [2022/11/18 10:48] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Partie 2 :Mesuré le temps passé par une fonction ====== | + | ====== Partie 2 : Mesurer le temps passé par une fonction ====== |
| [[in204:tds:sujets:td9|TD9]] | [[in204:tds:sujets:td9|TD9]] | ||
| Line 140: | Line 140: | ||
| ==== Question n°5 ==== | ==== Question n°5 ==== | ||
| - | Créer une fonction nouvelle qui va appeller la fonction <code>estimate_time</code> pour calculer <code>x</code> fois le temps et retourné le temps moyen pour effectuer un "run" de la fonction. | + | Créer une fonction nouvelle qui va appeller la fonction ''estimate_function_time'' pour calculer ''x'' fois le temps nécessaire pour calculer la fonction et qui retourn le temps moyen pour effectuer un "run" de la fonction. |
| - | Exécuter cette fonction pour les fonctions <code>power</code> et <code>factorial</code> précédemment définie. | ||
| - | ==== Question n°4 ==== | + | Cette fonction aura l'entête suivante : |
| - | Que faut-il faire ajouter pour dire au compilateur que la fonction <code>factorial</code> ou que la fonction <code>power</code> peut-être exécutée au moment de l'exécution ? | + | <code cpp> |
| + | template<class Function, class ... Args> | ||
| + | long long mean_function_time(int number_of_runs, Function function, Args... arguments) | ||
| + | { | ||
| + | ... | ||
| + | } | ||
| + | </code> | ||
| - | Effectuer la modification. | + | <hidden Correction> |
| + | |||
| + | Il suffit de lancer ''number_of_runs'' fois un appel à ''estimate_function_time'' pour la fonction et les arguments. Ceci donne le code suivant : | ||
| + | |||
| + | <code cpp> | ||
| + | template<class Function, class ... Args> | ||
| + | long long mean_function_time(int number_of_runs, Function function, Args... arguments) | ||
| + | { | ||
| + | long long duration = 0L; | ||
| + | int remaining_runs = number_of_runs; | ||
| + | while (remaining_runs-- > 0) | ||
| + | duration += estimate_function_time(function, arguments...).first.count(); | ||
| + | return duration / (long long)number_of_runs; | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | </hidden> | ||
| - | Calculer le temps pris désormais par ces fonctions. | ||
| + | [[.td9:part1|Manipuler un nombre variable de paramètres]] | ||
| + | [[.td9:part3|Exécution à la compilation]] | ||