gpt4 book ai didi

c++ - 如何避免动态分配小对象?

转载 作者:太空狗 更新时间:2023-10-29 20:53:45 25 4
gpt4 key购买 nike

我发现很多时候我只需要一个小的std::map (比如说少于 10 个键),或者一个小的 std::vector只包含几个元素,我认为总是动态分配它们真的是在浪费性能,尤其是在像 std::map<std::string, std::string> 这样的结构中。 , std::vector<std::string> ,确实涉及很多动态分配。

有什么好的建议吗?至少减少动态分配的数量,更好地不牺牲易用性。谢谢

最佳答案

您可以为大小的数据使用堆栈分配的内存(因为堆栈分配非常快,基本上只是堆栈指针移动;尽管堆栈的空间很宝贵并且这是一个非常有限的资源),分配的内存用于更大的大小。换句话说,按照std::string小字符串优化 思路思考。

此外,为了加快分配速度,您还可以在堆上预分配大内存块,然后在这些 block 内分配较小的内存块,同样基本上只是在 block 内增加一个指针。有关此池分配器 技术的示例实现,请考虑阅读 this blog post .

您会发现这个 CppCon 2016 演讲也很有趣:

High Performance Code 201: Hybrid Data Structures

关于c++ - 如何避免动态分配小对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41763487/

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