Bonjour,
Je viens de finir d'écrire une classe toute simple permettant de calculer le temps écoulé d'un point à l'autre d'un algo.
Vu que j'écris le plus souvent des routines en C++ pas vraiment orientées objet / réutilisables, j'aimerai savoir si dans ce code vous voyez des choses dérangeantes ou contraire aux bonnes pratiques.
Je pense aux points suivants :
-usage des inline
-retour de références sur membres par les getters (devrai-je préférer une copie? )
-affectation de classe avec "=" (dans ptime, il me semble que "=" n'est pas redéfini pour retourner une référence), faudrait-il y aller à coup de pointeurs?
-autres?
Merci d'avance...
Stopwatch.h
Stopwatch.cpp
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 #ifndef _STOPWATCH_H #define _STOPWATCH_H #include <boost/date_time.hpp> namespace bpt = boost::posix_time; class Stopwatch { public: //value returned in case of misuse of the class static const long NO_DURATION = -1000; Stopwatch( bool immediateStart ); virtual ~Stopwatch(); //watch control inline void start(); inline void stop(); inline void reset(); //result calculation long elapsedMillis() const; inline const bpt::ptime& getStartTime() const; inline const bpt::ptime& getStopTime() const; private: bpt::ptime startTime; bpt::ptime stopTime; }; inline const bpt::ptime& Stopwatch::getStartTime() const { return startTime; } inline const bpt::ptime& Stopwatch::getStopTime() const { return stopTime; } void inline Stopwatch::reset() { startTime = bpt::not_a_date_time ; stopTime = bpt::not_a_date_time ; } void inline Stopwatch::start() { startTime = bpt::microsec_clock::universal_time() ; stopTime = bpt::not_a_date_time ; } void inline Stopwatch::stop() { stopTime = bpt::microsec_clock::universal_time() ; } #endif /* _STOPWATCH_H */
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
17
18
19
20
21
22
23
24
25
26
27
28 #include "Stopwatch.h" Stopwatch::Stopwatch( bool immediateStart ) : startTime( immediateStart ? bpt::microsec_clock::universal_time() : bpt::not_a_date_time ) { } Stopwatch::~Stopwatch() { } long Stopwatch::elapsedMillis() const { //watch isn't running... if( startTime.is_not_a_date_time() ) return NO_DURATION; //stop() wasn't called, return approx so far; if( stopTime.is_not_a_date_time() ) return (bpt::microsec_clock::universal_time() - startTime).total_milliseconds(); //normal return (stopTime - startTime).total_milliseconds(); }







Répondre avec citation








) fourni par mingw qui génère des pavés textes de 6mo dans lequel j'essaie de trier tant bien que mal. Je vais aussi avoir besoin d'analyser les fuites mais pour cela, je dois encore faire des recherches.


Partager