【发布时间】:2015-09-06 12:07:22
【问题描述】:
我正在尝试找出我在 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的结果表明调用总是成功的。