考虑两个应用程序:一个(num.1)调用 malloc() 多次,另一个(num.2)调用 malloc() 几次。
两个应用程序都分配same内存量(假设 100MB)。
对于哪个应用程序,下一个 malloc() 调用会更快,#1 还是 #2?
换句话说: malloc() 是否有内存中已分配位置的索引?
您问了 2 个问题:
-
对于哪个应用程序,下一个 malloc() 调用会更快,#1 还是#2?
- 换句话说: malloc() 是否有内存中已分配位置的索引?
您暗示它们是同一个问题,但事实并非如此。后一个问题的答案是肯定的。
至于哪个更快,就不好说了。它取决于分配器算法、机器状态、当前进程中的碎片等等。
不过,您的想法是合理的:您应该考虑 malloc 的使用将如何影响性能。
我曾经编写过一个应用程序,它使用了大量的小内存块,每个内存块都是用 malloc() 分配的。它工作正常但速度很慢。我只用一次替换了对 malloc 的多次调用,然后在我的应用程序中分割了这一大块。速度要快得多。
我不推荐这种方法;这只是说明 malloc 的使用会对性能产生重大影响。
我的建议是测量它.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)