Bonjour Katian.
SFML
Je trouve dommage que vous ayez choisi de prendre la SFML comme dépendance de votre classe. Le C++ propose des outils comme std::chrono qui vous permettrait de vous extraire de cette dépendance. Elle n'a peut-être pas d'importance pour vous, mais sachez que personne n'installera la SFML juste pour mesurer le temps d'exécution d'un de ses bouts de code.
#include <SFML/System/Clock.hpp> // SAD :(
L'API
Voici ce que tout développeur lira en premier quand il s'intéressera à votre travail :
1 2 3 4 5 6 7
| class Benchmark final : private sf::NonCopyable
{
public:
Benchmark (const std::string& text_, int delay_);
bool keep_running (); |
Il s'agit de l'API : l'interface de votre classe Benchmark. J'ai deux remarques majeures :
- Comment je me sers de cette classe ?
- Mais en fait, elle fait quoi au juste ?
Ce bout de code n'est pas du tout explicite. L'exemple cité en commentaire n'est ni une documentation, ni une spécification : est-ce la seule façon de se servir de Benchmark ? D'ailleurs dans cet exemple, nulle part vous n'appelez une fonction à bencher ...
En conclusion, je n'ai aucune idée de l'usage que je dois en faire. Voila comment je m'attendrais utiliser un banc d'essai :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <iostream>
#include <vector>
#include <algorithm>
#include "Benchmark.h"
int function_to_bench(double input);
int main()
{
std::vector<double> inputs(1'000'000);
std::generate(begin(inputs), end(inputs), [n=0.0] () mutable { n+=1.0; return n; });
Benchmark bench{function_to_bench, inputs};
// eventuellement, bench.start();
std::cout << bench.elapsed_time() << "\n";
} |
Notes en vrac
- Vous ne respectez pas la règle de 5 : si vous définissez un constructeur, destructeur ou opérateur d'assignation, vous devez tous les définir.
- Votre classe crache dans la sortie standard, ce n'est ni nécessaire ni attendu.
- Une fois les remarques ci-dessus prises en compte, je pourrais vous suggérer quelques fonctionnalités suplémentaires.
J'espère que ces commentaires vous permettront d'améliorer la qualité de votre API, je serai heureux de la voir progresser
Partager