我很好奇,編譯器會多少優化做的,所以......優化期望在STL
// assume we have this declared somewhere
std::vector<int> vec;
// my question is, when fully optimized will this...
for (int i(0); i<100; ++i)
vec.push_back(i);
// evaluate to this? psuedo code...
const size_t size = size();
const size_t newsize = size + 100;
if (size < vec.capacity())
vec.exponentialGrowth();
vec.setSize(newsize);
for (size_t i(size); i<newsize; ++i)
vector[i] = i;
我與Visual Studio Express的2012工作已啓用優化。 我試過看反彙編,但優化使其難以閱讀。
回覆:「我試過看反彙編,但優化使其難以閱讀。」這可能意味着優化器在優化方面做得很好。 :-P更嚴重的一點是,我認爲您所提供的代碼不會像這樣優化,除非優化器的技術狀態最近接近了神奇的優化級別。 –
可能不是。如果你知道目標大小,使用'resize'(或'reserve')。同時,請注意平均拷貝數接近上限(如果內存服務的話,大多數實現方式都是3左右),所以即使在最壞的情況下,它也不像許多人最初想象的那麼大。 –
而不是使用int作爲模板參數,請使用用戶定義的類。儀器不同的構造函數,看看會發生什麼。 – user515430