如何减少我的C程序的开销?

Mic*_*ine 0 c linux optimization

我在Linux上使用C,我的程序是高CPU密度和I/O密度.使用time命令显示我的程序有很多开销:

real    1m4.639s
user    0m53.929s
sys         0m9.747s
Run Code Online (Sandbox Code Playgroud)

有可能找出'sys 0m9.747s'的成本并减少它吗?

=================================================

如果没有代码这个问题不容易回答,请原谅我,但我的代码太长了,无法在此发布.所以任何提示或线索也会这样做.谢谢

Bas*_*tch 7

系统CPU时间是内核为进程执行系统调用所花费的时间.您可以使用strace找出您的进程正在执行的系统调用.

也许你有很多小的读取系统调用(或写入).你可能会通过增加缓存大小(因此每降低它们的数量read,并write会发送更多的字节).见这个那个回答有关问题.

您还可以使用mmap将文件投影到(虚拟)内存中; 对于某种磁盘I/O,这可能是更好的方法.

但我不会专注于系统时间.它似乎只占CPU时间的15%,这是一个合理的比例.

我建议你描述你的程序(使用gprofoprofile),并找出瓶颈的位置.