Вы должны пометить это конкретной реализацией (например, linux
), поскольку ответ, безусловно, зависит от реализации. Сейчас я возьму Linux, так как он самый популярный.
С учетом вышесказанного, brk
теоретически более оптимизируемый, и на практике он работает примерно на 10% быстрее на моей машине. Выделив одну страницу, я получаю следующие времена:
brk
: минимум 2550 циклов, типичные 2650 циклов
mmap
: минимум 2700 циклов, типичные 2800 циклов
Я помню, что слышал, как brk
может пропустить блокировку семафора mmap
, что объясняет расхождение.
Примечание: Я обновил это время после настройки моего теста, чтобы сделать фиктивные вызовы до синхронизации, чтобы гарантировать, что весь код будет в кеше.