一些map優化的辦法

2021-10-02 05:11:28 字數 786 閱讀 7739

std::map用於key-value式的查詢,增加map的效率的辦法:

1. 使用emplace代替insert. 直接構建key-value物件

map.emplace(std::piecewise_construct,

std::forward_as_tuple(i,"x"),

std::forward_as_tuple(i));

2. key減少對std::string的依賴

std::string可能會發生對動態記憶體的申請。

class key 

bool operator<(const key& other)

else

else }}

};

3. 為了保證嚴格弱排序,小於操作符的實現注意:當物件值相等時,永遠返回false。

為了實現這一點,例2中的operator《已經非常複雜了,當考慮進入更多成員時,將極易出錯。現在有了std::tie解決這個問題

class key 

bool operator<(const key& other)

};

4. 自定義分配器,通過boost記憶體池獲取

實測並未增加效率

#include typedef std::map::value_type pair_type;

typedef std::map> map_type;

map_type map;

優化的一些例項

優化使用的工具,使用loadrunner做為壓力測試工具,使用jprobe進行 剖析。1 第乙個例項。原狀況 呼叫乙個api,發現執行的時間很高,用jprobe分析,發現消耗時間最長的是把快取中的乙個樹從第三個節點進行扁平化,就是把第二個節點的子樹構造為乙個列表,不知道為什麼構造這個資料的耗時比直接...

mysql的一些優化

前言 sql優化,是一種概率層面的優化。至於是否實際使用了我們的優化,需要通過explain進行推測。注意 服務層中有sql優化器,可能會影響我們的優化,同時註明 sql的優化前提是有索引 有索引 有索引 in和exists的使用場景 select from a where exists selec...

Elasticsearch的一些優化

1.多執行緒程式插入,可以根據伺服器情況開啟多個執行緒index 速度可以提高n倍,n 2 2.如果有多台機器,可以以每台設定n個shards的方式,根據業務情況,可以考慮取消replias curl xput d 這裡設定20個shards,複製為0,如果需要replicas,可以完成index後...