mmap vs sbrk, сравнение производительности - PullRequest
3 голосов
/ 01 апреля 2011

Какой из этих вызовов в среднем быстрее? Я слышал, что mmap быстрее для небольших распределений, но я не слышал ни того, ни другого. Любая информация о производительности для них была бы хороша.

1 Ответ

10 голосов
/ 01 апреля 2011

Вы должны пометить это конкретной реализацией (например, linux), поскольку ответ, безусловно, зависит от реализации. Сейчас я возьму Linux, так как он самый популярный.

С учетом вышесказанного, brk теоретически более оптимизируемый, и на практике он работает примерно на 10% быстрее на моей машине. Выделив одну страницу, я получаю следующие времена:

  • brk: минимум 2550 циклов, типичные 2650 циклов
  • mmap: минимум 2700 циклов, типичные 2800 циклов

Я помню, что слышал, как brk может пропустить блокировку семафора mmap, что объясняет расхождение.

Примечание: Я обновил это время после настройки моего теста, чтобы сделать фиктивные вызовы до синхронизации, чтобы гарантировать, что весь код будет в кеше.

...