このコード
#include <iostream>
#include <vector>
struct obj
{
std::string name;
int age;
float money;
obj():name("NO_NAME"),age(0),money(0.0f){}
obj(const std::string& _name, const int& _age, const float& _money):name(_name),age(_age),money(_money){}
obj(obj&& tmp): name(tmp.name), age(tmp.age), money(tmp.money) {}
obj& operator=(obj&&) {return *this;}
};
int main(int argc, char* argv[])
{
std::vector<obj> v;
for( int i = 0; i < 5000000; ++i )
{
v.emplace_back(obj("Jon", 45, 500.6f));
}
return(0);
}
と同等のものよりも約 2 倍遅く、そのv.push_back(obj("Jon", 45, 500.6f));
理由がわかりません。
これを botg++ 4.7.2
とでテストしましclang++ 3.3
た。
どこが間違っていますか?
移動コンストラクターを修正したので、さらに追加します
Linuxのユーティリティでこの2をテストし、time
それらをコンパイルしています
g++-4.7 -std=c++11 -s -O3 -DNDEBUG
また
clang++ -std=c++11 -s -O3 -DNDEBUG