IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

exemple de classe benchmark


Sujet :

C++

  1. #1
    Membre régulier

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 120
    Points : 82
    Points
    82
    Billets dans le blog
    1
    Par défaut exemple de classe benchmark
    Bonjour,

    Si vous cherchez une classe permettant de mesurer le temps d’exécution d'un bout de code, j'ai créé une classe benchmark ici : https://github.com/katian/dev_cpp

    Bien sûr, vos remarques sont les bienvenues

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 053
    Points
    33 053
    Billets dans le blog
    4
    Par défaut
    Pourquoi une dépendance à la SFML alors qu'il existe std::chrono ?

  3. #3
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <SFML/System/Clock.hpp> // SAD :(
    L'API
    Voici ce que tout développeur lira en premier quand il s'intéressera à votre travail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    1. Comment je me sers de cette classe ?
    2. 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 :

    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
    #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

Discussions similaires

  1. Exemple de classe
    Par startx25 dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 17/09/2010, 23h10
  2. [POO] Exemple de classe un peu tordue
    Par daddiz dans le forum Langage
    Réponses: 13
    Dernier message: 11/10/2008, 19h31
  3. [POO] Exemple de classe
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 27/04/2008, 00h33
  4. Réponses: 7
    Dernier message: 01/08/2007, 16h06
  5. [C# 2.0] Un exemple de classe générique qui ne compile pas.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo