查找大型boost::unordered_map的大小

Finding the size of a large boost::unordered_map

本文关键字:map unordered 大型 boost 查找      更新时间:2023-10-16

我想找到一个boost::unordered_map的大小,它包含一个指针,指向一个由std::string映射的类。我在做sizeof(unordered_map var)对吗?它会给我它所占的空间吗?包括占用房子的费用吗?我想测量它,将它与保存相同数据的std::map进行比较,这也是我通过sizeof(std::map var)来测量的。我想知道这两者,以确定每个占用多少存储空间,以及哪个是更好的选择,比较速度和空间。

请让我知道我计算尺寸的方法是否正确,并将给我实际/正确的尺寸,并将帮助我做出正确的决定。

编辑1:

如果我得到尺码的方法是错误的,请告诉我得到正确尺码的方法(包括客房管理)

TIA

- r

sizeof()操作符只返回对象的大小,但不返回它在堆上占用的空间(动态分配的内存)。因为映射和字符串很可能会在堆上分配内存,所以这对您没有帮助。

没有简单的方法来测量程序某些部分的总内存占用。然而,这并非不可能。一种选择是使用自定义分配器,它记录其内存分配,并且您可以将其用于与您想要度量的实体相关的所有对象(对于映射及其对象,包括字符串)。

您将无法可靠地计算地图所使用的空间量。有些类型和空间是你无法访问的。

你应该做的是在你认为有必要的时候问一个与你想要解决的问题完全不同的问题。