vector的效能利器 reserve

2021-10-03 16:50:59 字數 877 閱讀 5989

vector是c++程式設計中的最常見的容器之一,可以幫助使用者自動管理儲存空間,需要分配儲存空間的場景,可以取代原生陣列.

vector在實踐的過程中,提公升效能的要點就是盡量使用reserve,執行期能確定個數,應該用reserve,不建議用傳遞大小的陣列建構函式或者呼叫resize

為什麼不建議使用resize

reserveresize函式都能分配足夠容納下指定個數物件的空間.不同的是resize會改變陣列的size,並且會呼叫物件的建構函式.reserve:只是分配所需要的空間

在常規的情況下,預設生成的物件最後都會被覆蓋掉,如果儲存型別的建構函式比較複雜,會以大代價做無用功的

reserve只是分配所需要的記憶體

#include #include class foo 

};int main(int argc, char* ar**)

呼叫結果是

總結:resizereserve的區別為reserve申請一塊大記憶體,什麼都沒有,但是resize會得到乙個個鮮活的物件.

使用vector盡量用reserver提高效能.

MySQL效能利器 innotop工具

innotop是乙個不錯的mysql效能分析工具,使用perl編寫的,本身很強大,很值得研究,之前作者在2013年就已經不更新,但是最近作者又開始更新了。而且最新的版本是 version 1.11.4。有興趣的童鞋還是學習下。會很有收穫的。git clone yum install perl ext...

list和vector效能分析

功能 在list 和vector 中插入1百萬個上述型別所花的時間以秒為單位 表 描述 正如你所看到的對於小的資料型別vector的效能要比list好得多,而對於大型的數 據型別則相反list的效能要好得多,區別是由於vector 需要重新增長以及拷貝元素。但是資料型別的長度不是影響容器效能的惟一標...

vector記憶體機制和效能分析

關於vector,簡單地講就是乙個動態陣列,裡面有乙個指標指向一片連續的記憶體空間,當空間不夠裝下資料時會自動申請另一片更大的空間,然後把原有資料拷貝過去,接著釋放原來的那片空間 當釋放或者說是刪除裡面的資料時,其儲存空間並不會釋放,僅僅只是清空了裡面的資料。接下來,我會詳細地說說這些。一 首先,看...