0
我想學習移動語義和我讀了一招可能比一個副本更快。不過,我看恰恰相反以下瑣碎代碼:爲什麼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,我使用鏗鏘與c + + 14和禁用優化(O0)。 – Zaxter