Распределение Emacs-буфера с помощью mmap - PullRequest
8 голосов
/ 13 июня 2011

Почему mmap выделение буфера активировано по умолчанию в cygwin, freebsd и irix6-5, но не в linux?

См. USE_MMAP_FOR_BUFFERS в emacs/src/config.h. и use_mmap_for_buffers в emacs/configure.in.

Разве не mmap доступ на основе превосходит по сравнению с обычным распределением буфера?

Ответы [ 2 ]

6 голосов
/ 13 июня 2011

По умолчанию glibc malloc () использует mmap для больших выделений;Из справочной страницы malloc (3).«При выделении блоков памяти, превышающих байты MMAP_THRESHOLD, реализация glibc malloc () выделяет память как частное анонимное отображение с использованием mmap (2). MMAP_THRESHOLD по умолчанию составляет 128 кБ, но настраивается с помощью mallopt (3).»

Возможно, переключение на mmap на этих других платформах - это обход плохих реализаций malloc (), которые сами этого не делают?

2 голосов
/ 13 июня 2011
Распределение

mmap () проще реализовать в поточно-ориентированном режиме, но в Linux распределение brk () примерно на 10% медленнееСм этот вопрос .

...