I ont une classe:construction de classe d'optimisation en C++
class A
{
double a;
map <int, double> b;
public:
A():a(0.0){}
A(const double aa, const map <int, double> & bb): a(aa), b(bb){}
A(double && aa, map <int, double> && bb):a(aa), b(bb) {}
};
L'optimiseur (VS2012) montre la ligne A(a1*b1, std::move(bmap))
prend la plupart du temps. Est-ce qu'il me manque quelque chose qui pourrait accélérer la construction de l'objet?
J'ai commencé à apprendre les constructeurs de mouvement seulement récemment, donc je ne suis pas sûr si mon constructeur de mouvement ou son utilisation optimale ou non.
peu plus sur le code: Je
A operator *(double in)
{
if(in !=0.0)
{
map<int, double> tmp(b); //second bottleneck
for(auto & itr: tmp)
tmp.second *= in;
return A(in * a, std::move(tmp)); //first optimization bottleneck
}
return A();
}
Que faites-vous avec cette classe? Le constructeur pourrait prendre la plupart du temps parce que vous l'utilisez (ou en abusant, qui sait?) Fortement ... – MikMik