c - 最小化 malloc() 调用量可以提高性能吗?

标签 c malloc

考虑两个应用程序:一个(num. 1)调用 malloc() 多次,另一个(num. 2)调用 malloc() 几次。 两个应用程序分配相同的内存量(假设 100MB)。
对于哪个应用程序,下一次 malloc() 调用会更快,#1 还是#2?
换句话说: malloc() 是否有内存中已分配位置的索引?

最佳答案

您问了 2 个问题:

  • 对于哪个应用程序,下一个 malloc() 调用会更快,#1 还是 #2?
  • 换句话说:malloc() 是否有内存中已分配位置的索引?
<小时/>

您暗示它们是同一个问题,但事实并非如此。后一个问题的答案是肯定的。

至于哪个会更快,那是不可能说的。它取决于分配器算法、机器状态、当前进程中的碎片等等。

不过,您的想法是合理的:您应该考虑 malloc 的使用将如何影响性能。 我曾经编写过一个应用程序,它使用了大量的小内存块,每个内存块都是用 malloc() 分配的。它工作正常但速度很慢。我只用一次替换了对 malloc 的多次调用,然后在我的应用程序中分割了这一大块。速度要快得多。

我不推荐这种方法;这只是说明 malloc 的使用会对性能产生重大影响。

我的建议是衡量

关于c - 最小化 malloc() 调用量可以提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53660105/

相关文章:

c - 使用依赖结构中值的函数更新结构值

c - 如何使 Linux 中的脚本使用我的拦截器并工作? (#!)

c++ - malloc如何分配小于4KB的内存?

assembly - 如何在 x86_64 asm 中调用 malloc

linux - GNU malloc_info() : get really allocated memory?

c - SetWindowLongPtr() 如何传递消息?

c - C中将空行压缩为一个空行

c - 我的 'append' 算法或代码有什么问题?

在其他函数中使用 malloc 更改字符串

c - 我是否转换 malloc 的结果?