考虑两个应用程序:一个(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/