gpt4 book ai didi

c++ - 如何设计适合数百万分配的类?

转载 作者:可可西里 更新时间:2023-11-01 18:04:44 30 4
gpt4 key购买 nike

如果我想分配一个类Foo 的数百万个对象,并且我希望内存和时间高效,我应该如何设计Foo 类?

显然,Foo 不应包含太多成员数据。

另外,我猜,它不应该使用虚函数?

Foo 从基类派生的成本是多少?来自几个基类?

还有其他技巧可以使数百万个 Foo 对象非常高效吗?

最佳答案

我认为关于为数百万个分配设计类没有什么可说的。是的,有明显的内存限制,所以如果您有固定数量的内存,这可能是您真正关心的问题,否则您将始终面临内存不足的风险。指向虚拟表的指针就是一个指针(在 32 位或 64 位体系结构上为 4 或 8 个字节),不确定多重继承中是否属于这种情况。调用虚拟函数有虚拟查找的开销(如果您最近没有使用它,还有额外的缓存未命中),但仅适用于虚拟函数,并且它们可能永远不会被内联。

如果有很多重复值,您可能还需要考虑使用单独的数据结构(享元模式)。为了提高效率,请确保您拥有轻量级(内联)构造函数和赋值运算符,尤其是如果您打算使用 STL vector 和类似内容。

这些都是非常简单的东西,所以现在我的真正建议是:

真正会扼杀你的内存管理的是如果你得到碎片,你可能突然有一堆内存,但仍然无处放置你的对象(没有足够的连续空间)。如果你有很多交错分配,这可能会变成一个真正的问题,所以你可能想考虑分配大块对象,将它们保存在池中并重用。或者使用自定义分配器(新运算符),在其中预分配一个内存块,该内存块是您的对象大小的倍数,并将其用于您的对象。

关于c++ - 如何设计适合数百万分配的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397168/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com