ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/outil/src/ot_cpu.cpp
Revision: 410
Committed: Fri Jul 5 21:03:49 2013 UTC (11 years, 10 months ago) by francois
File size: 3237 byte(s)
Log Message:
ajout de XFEM_TRIANGLE3
Ajout de flags dans FEM_ELEMENT_MAILLAGE
Correction de bug dans FEM_MAILLAGE_OUTILS

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 francois 410 double OT_CPU::ajouter_etape(std::string nom)
38 francois 277 {
39 francois 283 tabcpu.insert(tabcpu.end(),clock());
40     tabnom.insert(tabnom.end(),nom);
41 francois 410 double temps=tabcpu[tabcpu.size()-1]-tabcpu[tabcpu.size()-2];
42     return temps/CLOCKS_PER_SEC;
43 francois 277 }
44    
45     int OT_CPU::get_nb_etape(void)
46     {
47 francois 283 return tabcpu.size()-1;
48 francois 277 }
49    
50     void OT_CPU::get_etape(int num,std::string &nom,double &temps)
51     {
52 francois 283 temps=1.*(tabcpu[num]-tabcpu[num-1]);
53 francois 410 temps=temps*1./CLOCKS_PER_SEC;
54 francois 283 nom=tabnom[num];
55 francois 277 }
56    
57    
58     void OT_CPU::get_etape(std::string nom,double &temps)
59     {
60 francois 283 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 francois 277
69     }
70    
71     void OT_CPU::get_etape(int num1,int num2,std::string &nom,double &temps)
72     {
73 francois 283 temps=1.*(tabcpu[num2]-tabcpu[num1-1]);
74     temps=temps*1/CLOCKS_PER_SEC;
75     nom=tabnom[num1]+"-"+tabnom[num2];
76 francois 277 }
77    
78     void OT_CPU::get_total(int num,double &temps)
79     {
80 francois 283 temps=1.*(tabcpu[num]-tabcpu[0]);
81     temps=temps*1./CLOCKS_PER_SEC;
82 francois 277 }
83    
84    
85    
86     void OT_CPU::get_tabfinal(std::vector<std::string> &tab)
87     {
88 francois 283 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 francois 277 }
104    
105     void OT_CPU::get_tabfinalcompresse(std::vector<std::string> &tab)
106     {
107 francois 283 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 francois 277 }
131    
132    
133    
134     void OT_CPU::enregistrer(char* fichier)
135     {
136 francois 283 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 francois 277 }
146