日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

vector notes

發(fā)布時(shí)間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vector notes 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

struct _Vector_base
{
public:
????? _Vector_impl _M_impl;
};

?

struct _Vector_impl : public _Tp_alloc_type???????? _Vector_impl類時(shí)從alloc繼承的

?

class vector : protected _Vector_base<_Tp, _Alloc>?? vector從base類繼承。

?

vector向外提供的接口push_back' pop等都沒(méi)有直接調(diào)用new/delete, 而是調(diào)用allocator的allocate, deallocate

?

allocator沒(méi)有靜態(tài)函數(shù)和成員

?

因此每個(gè)vector都是有自己的緩存; 內(nèi)部申請(qǐng)內(nèi)存效率很高(完全無(wú)互斥)

?

如果自己維護(hù)全局內(nèi)存, 有幾十個(gè)線程要同時(shí)申請(qǐng)內(nèi)存, 需要很嚴(yán)重的互斥。

?

stl的容器都是值容器, 一般對(duì)象不太大時(shí), 直接放入對(duì)象比較好。 可以搜搜為啥不放指針

?

vector的內(nèi)存一般是2倍動(dòng)態(tài)增長(zhǎng)。 假設(shè)vector只能放10個(gè)元素, 第11個(gè)放不進(jìn)去,此時(shí)會(huì)申請(qǐng)20個(gè)元素空間, 把此前的10個(gè)拷過(guò)去、再放入第11個(gè)
所以vector初始時(shí)調(diào)用reserve預(yù)分配空間性能比較好, 如果50%的用戶30個(gè)節(jié)點(diǎn)已經(jīng)足夠, 可以reserve(30個(gè)節(jié)點(diǎn)), 此時(shí)的插入刪除操作完全不需再向os申請(qǐng)內(nèi)存

1) 可能會(huì)有碎片, 連接google的tcmalloc就可以了。 完全不用修改代碼
2) 可能會(huì)有一定的內(nèi)存浪費(fèi); 如果內(nèi)存不是太緊張,也沒(méi)關(guān)系

?

?

節(jié)點(diǎn)大小32字節(jié), 最多200個(gè)節(jié)點(diǎn), 100w個(gè)user, 總共需要內(nèi)存 5G

最多200個(gè)節(jié)點(diǎn), 夠95%的用戶使用了; 要求再多時(shí)就換入換出吧, 類似進(jìn)程只有2G內(nèi)存, 再多就換入換出一樣
如果要把用戶所有內(nèi)容裝進(jìn)來(lái), 浪費(fèi)、太不可控、會(huì)有性能問(wèn)題

總結(jié)

以上是生活随笔為你收集整理的vector notes的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。