mmap vs sbrk,性能比较

时间:2011-04-01 18:53:52

标签: c memory-management mmap sbrk

这些电话中的哪一个平均更快?我听说mmap对于较小的分配来说速度更快,但我还没有听到过比较。任何有关这些表现的信息都会很好。

1 个答案:

答案 0 :(得分:10)

您应该使用特定的实现(例如linux)对此进行标记,因为答案肯定会因实现而异。现在我会假设Linux,因为它是最受欢迎的。

据说,brk理论上更加优化,实际上它在我的机器上运行速度提高了约10%。分配一页,这些是我得到的时间:

  • brk:最少2550次循环,典型的2650次循环
  • mmap:最少2700个循环,典型的2800个循环

我记得听过brk能够跳过锁定mmap信号量的内容,这可以解释这种差异。

注意:我在调整测试后更新了这些时间,以便在计时之前进行虚拟调用,以确保代码全部都在缓存中。