ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_cpu.cpp
Revision: 368
Committed: Fri Oct 19 17:27:15 2012 UTC (12 years, 6 months ago) by francois
File size: 3160 byte(s)
Log Message:
ajout d'une correction pour l'anglais

File Contents

# User Rev Content
1 francois 277 #include "gestionversion.h"
2     #include "ot_cpu.h"
3     #include <stdio.h>
4     #include <map>
5    
6    
7    
8    
9    
10     OT_CPU::OT_CPU()
11     {
12 francois 283 initialise();
13 francois 277 }
14    
15     OT_CPU::OT_CPU(OT_CPU &mdd)
16     {
17 francois 283 for (int i=0;i<mdd.tabcpu.size();i++)
18     tabcpu.insert(tabcpu.end(),mdd.tabcpu[i]);
19     for (int i=0;i<mdd.tabnom.size();i++)
20     tabnom.insert(tabnom.end(),mdd.tabnom[i]);
21 francois 277 }
22    
23     OT_CPU::~OT_CPU()
24     {
25     }
26    
27    
28     void OT_CPU::initialise(void)
29     {
30 francois 283 tabcpu.clear();
31     tabnom.clear();
32     tabcpu.insert(tabcpu.end(),clock());
33     tabnom.insert(tabnom.end(),"Initialisation");
34 francois 277 }
35    
36    
37     int OT_CPU::ajouter_etape(std::string nom)
38     {
39 francois 283 tabcpu.insert(tabcpu.end(),clock());
40     tabnom.insert(tabnom.end(),nom);
41     return tabcpu.size();
42 francois 277 }
43    
44     int OT_CPU::get_nb_etape(void)
45     {
46 francois 283 return tabcpu.size()-1;
47 francois 277 }
48    
49     void OT_CPU::get_etape(int num,std::string &nom,double &temps)
50     {
51 francois 283 temps=1.*(tabcpu[num]-tabcpu[num-1]);
52     temps=temps*1/CLOCKS_PER_SEC;
53     nom=tabnom[num];
54 francois 277 }
55    
56    
57     void OT_CPU::get_etape(std::string nom,double &temps)
58     {
59 francois 283 temps=0.;
60     for (int i=0;i<get_nb_etape();i++)
61     {
62     std::string nomtmp;
63     double tempstmp;
64     get_etape(i+1,nomtmp,tempstmp);
65     if (nomtmp==nom) temps=temps+tempstmp;
66     }
67 francois 277
68     }
69    
70     void OT_CPU::get_etape(int num1,int num2,std::string &nom,double &temps)
71     {
72 francois 283 temps=1.*(tabcpu[num2]-tabcpu[num1-1]);
73     temps=temps*1/CLOCKS_PER_SEC;
74     nom=tabnom[num1]+"-"+tabnom[num2];
75 francois 277 }
76    
77     void OT_CPU::get_total(int num,double &temps)
78     {
79 francois 283 temps=1.*(tabcpu[num]-tabcpu[0]);
80     temps=temps*1./CLOCKS_PER_SEC;
81 francois 277 }
82    
83    
84    
85     void OT_CPU::get_tabfinal(std::vector<std::string> &tab)
86     {
87 francois 283 tab.clear();
88     std::string nom;
89     double temps;
90     char mess[255];
91     for (int i=0;i<get_nb_etape();i++)
92     {
93     get_etape(i+1,nom,temps);
94     char mess[255];
95     sprintf(mess," %30s : %.2lf s",nom.c_str(),temps);
96     tab.insert(tab.end(),mess);
97     }
98     get_total(get_nb_etape(),temps);
99     nom="Total";
100     sprintf(mess," %30s : %.2lf s",nom.c_str(),temps);
101     tab.insert(tab.end(),mess);
102 francois 277 }
103    
104     void OT_CPU::get_tabfinalcompresse(std::vector<std::string> &tab)
105     {
106 francois 283 tab.clear();
107     std::string nom;
108     double temps;
109     char mess[255];
110     std::map<std::string,std::string> lst;
111     for (int i=0;i<get_nb_etape();i++)
112     {
113     get_etape(i+1,nom,temps);
114     std::map<std::string,std::string>::iterator it=lst.find(nom);
115     if (it==lst.end())
116     {
117     get_etape(nom,temps);
118     char mess[255];
119     sprintf(mess," %30s : %.2lf s",nom.c_str(),temps);
120     tab.insert(tab.end(),mess);
121     std::pair<std::string,std::string> tmp(nom,nom);
122     lst.insert(tmp);
123     }
124     }
125     get_total(get_nb_etape(),temps);
126     nom="Total";
127     sprintf(mess," %30s : %.2lf s",nom.c_str(),temps);
128     tab.insert(tab.end(),mess);
129 francois 277 }
130    
131    
132    
133     void OT_CPU::enregistrer(char* fichier)
134     {
135 francois 283 std::vector<std::string> tab1,tab2;
136     get_tabfinal(tab1);
137     get_tabfinalcompresse(tab2);
138     FILE *out=fopen(fichier,"rt");
139     for (int i=0;i<tab1.size();i++)
140     fprintf(out,"%s\n",(char*)tab1[i].c_str());
141     for (int i=0;i<tab2.size();i++)
142     fprintf(out,"%s\n",(char*)tab2[i].c_str());
143     fclose(out);
144 francois 277 }
145