-3

std::string によってマップされたクラスへのポインターを含む、boost::unordered_map のサイズを見つけたいと思います。sizeof(unordered_map var) を実行しています。そうですか?それが占有するスペースを私に与えてくれますか?ハウスキーピングも含めて取り上げる?それを測定して、同じデータを保持する std::map と比較したかったのですが、これも sizeof(std::map var) で測定します。速度とスペースを比較して、それぞれが占有するストレージの量と、どちらを使用するのが良いかを決定するための両方を知りたいです。

サイズを計算する私の方法が正しいかどうかを教えてください。実際の/正しいサイズが得られ、正しい決定を下すのに役立ちます.

編集1:

サイズを取得しようとする私の方法が間違っている場合は、正しいサイズを取得する方法を教えてください (ハウスキーピングを含む)。

ティア

-R

4

2 に答える 2

1

このsizeof()演算子は、オブジェクトのサイズのみを返しますが、ヒープ上でオブジェクトが占有する領域 (動的に割り当てられたメモリ) は返しません。マップと文字列はヒープにメモリを割り当てる可能性が非常に高いため、これは役に立ちません。

プログラムの特定の部分の総メモリ フットプリントを測定する簡単な方法はありません。しかし、それは不可能ではありません。1 つのオプションは、メモリ割り当てを記録し、測定するエンティティに関連するすべてのオブジェクト (マップと文字列を含むそのオブジェクト) に使用するカスタム アロケータを使用することです。

于 2016-11-06T19:55:19.680 に答える
0

マップが使用するスペースの量を確実に計算することはできません。アクセスできないタイプとスペースがあります。

あなたがしなければならないことは、あなたが解決しようとしている問題に関係する、まったく別の質問をすることです。

于 2016-11-06T18:20:05.033 に答える