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