gpt4 book ai didi

performance - 内存分配/释放瓶颈?

转载 作者:行者123 更新时间:2023-12-03 02:00:18 25 4
gpt4 key购买 nike

典型的实际程序中内存分配/释放的瓶颈有多大?欢迎来自性能通常很重要的任何类型的程序的答案。 malloc/free/垃圾收集的正确实现是否足够快,以至于它只是少数极端情况下的瓶颈,或者大多数性能关键型软件会从尝试减少内存分配量或拥有更快的 malloc/free/中显着受益垃圾收集实现?

注意:我在这里不是谈论实时的东西。我所说的性能关键,是指吞吐量很重要,但延迟不一定的东西。

编辑:虽然我提到了 malloc,但这个问题旨在针对 C/C++。

最佳答案

这很重要,尤其是随着碎片的增加,分配器必须在更大的堆中更加努力地寻找您请求的连续区域。大多数性能敏感的应用程序通常会编写自己的固定大小的 block 分配器(例如,它们一次向操作系统请求 16MB 内存,然后将其分配为 4kb、16kb 等固定 block )以避免此问题。

在游戏中,我发现对 malloc()/free() 的调用消耗了高达 15% 的 CPU(在编写不佳的产品中),或者使用精心编写和优化的 block 分配器,消耗的 CPU 量只有 5%。鉴于游戏必须具有 60 赫兹的稳定吞吐量,让游戏在垃圾收集器偶尔运行时停滞 500 毫秒是不切实际的。

关于performance - 内存分配/释放瓶颈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/470683/

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