source: Sophya/trunk/SophyaLib/SysTools/ctimer.cc@ 219

Last change on this file since 219 was 219, checked in by ansari, 26 years ago

Creation module DPC/SysTools Reza 09/04/99

File size: 2.1 KB
Line 
1//
2// $Id: ctimer.cc,v 1.1.1.1 1999-04-09 17:57:04 ansari Exp $
3//
4
5#include "defs.h"
6#include "ctimer.h"
7
8//++
9// Class Timer
10// Lib Outils++
11// include ctimer.h
12//
13// Chronométrage de programmes. Le constructeur mémorise l'heure et
14// le temps CPU, ainsi qu'un message éventuel.
15//
16// Split affiche le temps partiel.
17//
18// Le destructeur affiche le temps total (CPU, et écoulé).
19//
20// Des macros permettent une utilisation simplifiée :
21// * TIMEF crée un objet de type Timer, avec le nom de la function
22// courante comme message. Le temps écoulé sera affiché à la sortie
23// de la function.
24// * SPLITTIME affiche le temps partiel du compteur crée par TIMEF
25// * TIMEN(nom) permet de donner un autre nom que le nom de la fonction.
26//--
27
28
29//++
30// Titre Constructeurs
31//--
32
33//++
34// Timer::Timer(const char* name)
35// Crée un objet qui mémorise l'heure et le temps CPU du process courant.
36// Le destructeur affiche les temps écoulé et CPU utilisé.
37//--
38
39Timer::Timer(const char* name)
40: timerName(name)
41{
42 cpu0 = cpuSplit = clock();
43 elapse0 = elapseSplit = time(0);
44 END_CONSTRUCTOR
45}
46
47//++
48// Titre Méthodes
49//--
50
51//++
52// Timer::Split(const char* comm)
53// Affiche le temps partiel.
54//--
55
56
57void Timer::Split(const char* comm)
58{
59 time_t elapse = time(0);
60 clock_t cpu = clock();
61
62 float cpuSecT = ((float)cpu - (float)cpu0) / (float)(CLOCKS_PER_SEC);
63 float cpuSecP = ((float)cpu - (float)cpuSplit) / (float)(CLOCKS_PER_SEC);
64
65 int etm = elapse - elapseSplit;
66 int etmt = elapse - elapse0;
67
68 cout << "***Timing " << (comm ? comm : timerName) << endl;
69
70// Pour des formats comme ca, la syntaxe printf est plus agreable.
71// Pour ne pas melanger stdio/iostream (pb de desynchronisation sur
72// autres C++ que GNU), on fait un cout << chaine.
73
74 char out[200];
75 sprintf(out,"CPU Time: Total= %g (Partial= %g) Sec.",
76 cpuSecT, cpuSecP);
77 cout << out << endl;
78
79 sprintf(out,"Elapsed Time: Total= %02d:%02d:%02d (Partial=%02d:%02d:%02d)",
80 etmt/3600, (etmt%3600)/60, etmt%60,
81 etm/3600, (etm%3600)/60, etm%60);
82
83 cout << out << endl;
84
85 elapseSplit = elapse;
86 cpuSplit = cpu;
87}
88
89Timer::~Timer()
90{
91 Split();
92}
Note: See TracBrowser for help on using the repository browser.