У меня есть класс:оптимизирующий класс строительство в 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) {}
};
Оптимизатор (VS2012) показывает линии A(a1*b1, std::move(bmap))
занимает большую часть времени.
Я пропустил что-то здесь, что может ускорить строительство объекта? Я начал изучать конструкторы перемещения только недавно, поэтому я не уверен, оптимален ли мой конструктор перемещения или его использование или нет.
Немного больше кода: У меня есть
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();
}
Что вы делаете с этим классом? Конструктор может занимать большую часть времени, потому что вы его используете (или неправильно используете, кто знает?) Сильно ... – MikMik