Я пытаюсь отследить проблему распределения памяти, которую я имею в OSX. Если я обычно компилирую и запускаю следующий код, он будет работать довольно быстро.Медленное распределение памяти в OSX
#include <sys/mman.h>
#define SIZE 8 * 1024 * 1024
int main(int argc, char const *argv[]) {
for (int i = 0; i < 50000; ++i) {
mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
}
return 0;
}
Однако, если я компилирую тот же код, но ссылки на какую-то библиотеку (т.е .: clang -o test test.c -lpcre
) он будет случайным образом либо быстро бегать (30мс) или очень медленно (18 секунд).
Обратите внимание, что я даже не пользуюсь библиотекой, просто связывая ее. Я также заметил, что это не происходит с какой-либо библиотекой.
Я запускаю OSX 10.10.3. Есть идеи?
Я могу воспроизвести проблему. Запуск его с помощью 'iprofile -timeprofiler' показывает, что все время тратится на' __mmap' (который вызывается из 'mmap'). И проверка результата 'mmap' показывает, что вызов всегда преуспевает. – Cornstalks