您应该使用特定的实现(如linux)来标记它,因为答案肯定会因实现而异。现在我假设 Linux,因为它是最流行的。
话brk虽如此,理论上更可优化,实际上它在我的机器上运行速度快 10%。分配一页,这些是我得到的时间:
brk: 最少 2550 次循环,典型 2650 次循环
mmap: 最少 2700 次循环,典型 2800 次循环
我记得听到一些类似brk能够跳过锁定mmap信号量的说法,这可以解释这种差异。
注意:在调整我的测试以在计时之前进行虚拟调用后,我更新了这些时间,以确保代码都在缓存中。