|
1
13
“小”的定义有所不同,但一般来说,如果对象的大小小于堆分配(或至少接近该大小)导致的大小开销,则可以将其视为“小”。 因此,在大多数情况下,16字节对象可能被认为是“小的”。在某些特定情况下,32字节对象可能被认为是小的。一个8000字节的对象绝对不是“小的”。 通常,如果您要解决使用小对象分配器的问题,那么您需要改进一些代码块的性能。如果使用一个小的对象分配器对您的性能没有帮助,您可能不应该使用它。 |
|
|
2
3
取决于平台。例如,在Linux上,我曾经用静态内存管理和GNU的std::map(红黑树和完全动态内存管理)对我自己的AVL树进行基准测试。令我惊讶的是,std::map有时会超过我自己的 高效 实施。而std::map执行危险的小内存分配量。
内存管理问题是有效的。从某种意义上说,如果可能,您应该始终尝试重用现有资源,或者避免创建临时副本。 这就是您所追求的效率/CPU性能。如果代码很少运行,那么麻烦是毫无意义的。
这是毫无意义的问题。如果你的程序需要一个8K的对象,那么你的程序需要它。时期。 只有当您收到软件占用太多RAM或探查器指向内存管理中的性能瓶颈的投诉时,才应该开始担心。否则,现代内存管理就相对快速和健壮。 P.S.I个人认为8K是平均内存分配大小。不小-不大。但我已经习惯于使用那些在堆上临时分配10+GB的程序。如果数据集必须驻留在RAM中,并且大小为10GB,那么应用程序除了尝试加载之外别无选择。 |
|
|
3
1
我当然不会认为8000字节是“小”字节。小对象最有可能意味着不超过几百字节的对象-对象数量达到了一小撮字节将导致最大的问题-然而,正如KennyTM指出的,这是依赖于实现的,并且一些C++运行时在处理小对象方面可能是非常好的。 |
|
|
4
0
问题不是,对象有多小,但是,操作员new/delete调用了多少内存开销?如果你的物体不止这些,那么它就不那么小了。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |