在内存中分配和分页所需的时间计为系统时间。尝试 /usr/bin/time tests/fact.repl - 它显示页面错误的数量。
/usr/bin/time tests/fact.repl
顺便说一下,“除了读取输入文件之外,我没有进行任何系统调用”和“我正在分配内存的gobs”是相互矛盾的陈述。
我没有进行系统调用
鉴于什么,这似乎不太可能 time 打印。
time
首先,运行你的程序 strace -c 。这将告诉您已执行了多少次系统调用,以及哪些系统调用占用了大部分时间。
strace -c
一旦您知道“有趣”的系统调用,您就可以获得更多详细信息 strace -tt -T -e trace=<interesting syscall> 。看到 strace手册页 了解更多信息。
strace -tt -T -e trace=<interesting syscall>
以来 strace -c 显示(有效)0时间,也许你正在分支子进程或创建线程?在这种情况下, strace -f 可能会给出有趣的输出
strace -f
我没有任何线索,但是你的程序是使用多个线程和Posix同步原语(例如 pthread_mutex_lock 等等...)?因为这些原语建立在一些系统调用(futex)之上。
pthread_mutex_lock