【发布时间】:2017-04-22 12:42:24
【问题描述】:
我有一堂课:
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();
}
【问题讨论】:
-
那堂课你在做什么?构造函数可能会占用大部分时间,因为您正在大量使用它(或滥用它,谁知道?)......
标签: c++11 visual-studio-2012 optimization constructor move