ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_cpu.cpp
Revision: 532
Committed: Fri Jul 4 14:39:20 2014 UTC (11 years, 1 month ago) by francois
File size: 3609 byte(s)
Log Message:
Resolution de bug avec le mailleur3D et la nouvelle formulation de carte de taille + parametrisation du pas d'integration dans le calcul des longueurs dans une metrique

File Contents

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