私は移動セマンティクスを学びたいと思っています。私は移動がコピーより速い可能性が高いと読んでいます。しかし、私は、次のささいなコードのための全く逆を参照してください。std :: stringのコピーコンストラクタが移動相手より速いように見えるのはなぜですか?
for (int i = 0; i < 100000000; ++i) {
std::string a("Copy");
std::string b = a;
}
for (int i = 0; i < 100000000; ++i) {
std::string a("Move");
std::string b = std::move(a);
}
そして、ここではそれが私のMac上でかかる時間です:コメントの一つとして
$ time ./copy.out
real 0m2.511s
user 0m2.481s
sys 0m0.011s
$ time ./move.out
real 0m3.993s
user 0m3.933s
sys 0m0.020s
ことは、ベンチマークのコード全体ですか?コンパイラフラグ? –
あなたの弦が短すぎて実際の違いを実証できないと思います。異なる長さの文字列で試してください。 –
@VittorioRomeo、私はclangをC++ 14で使用していて、最適化を無効にしています(O0)。 – Zaxter