User Tools

Site Tools


td9:part2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
td9:part2 [2021/11/06 15:22]
bmonsuez [Question n°2]
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 97: Line 97:
 <code cpp> <code cpp>
 template<​class numericalT>​ template<​class numericalT>​
-constexpr ​numericalT power_by_int(numericalT x, int y)+numericalT power_by_int(numericalT x, int y)
 { {
     numericalT result = (numericalT)1.0;​     numericalT result = (numericalT)1.0;​
Line 114: Line 114:
  
 template<​class Function, class ... Args> template<​class Function, class ... Args>
-std::​pair<​std::​chrono::​high_resolution_clock::​duration,​ long double> ​estimate_function_time(Function function, Args... arguments)+auto estimate_function_time(Function function, Args... arguments)
 { {
  auto starting_time = std::​chrono::​high_resolution_clock::​now();​  auto starting_time = std::​chrono::​high_resolution_clock::​now();​
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 argumentsCeci 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]]
  
  
td9/part2.1636212169.txt.gz · Last modified: 2021/11/06 15:22 by bmonsuez