1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    février 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : février 2003
    Messages : 30
    Points : 28
    Points
    28

    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
    4 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 4 720
    Points : 19 481
    Points
    19 481

    Par défaut

    Pourquoi une dépendance à la SFML alors qu'il existe std::chrono ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    juin 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    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 282
    Points : 2 326
    Points
    2 326

    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
    -- Yankel Scialom

Discussions similaires

  1. Exemple de classe
    Par startx25 dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 18/09/2010, 00h10
  2. [POO] Exemple de classe un peu tordue
    Par daddiz dans le forum Syntaxe
    Réponses: 13
    Dernier message: 11/10/2008, 20h31
  3. [POO] Exemple de classe
    Par Invité dans le forum Débuter
    Réponses: 6
    Dernier message: 27/04/2008, 01h33
  4. Réponses: 7
    Dernier message: 01/08/2007, 17h06
  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, 12h11

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