gpt4 book ai didi

c++ - Gprof 结果 : what is "alloc_mmap"?

转载 作者:行者123 更新时间:2023-11-30 04:32:07 25 4
gpt4 key购买 nike

我的程序的短期运行结果如下:

 67.93      3.24     3.24                             grid::rKfour(int, int)
9.43 3.69 0.45 alloc_mmap
5.03 3.93 0.24 30001 0.01 0.01 grid::timeStep()
3.04 4.08 0.15 42007105 0.00 0.00 linkers::linkers(linkers const&)
2.94 4.22 0.14 6360900 0.00 0.00 particle::fulldistance(particle&)
2.73 4.35 0.13 blas_thread_server
...

ldd 的输出是

linux-vdso.so.1 =>  (0x00007fffe2bea000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007eff34595000)
libboost_filesystem.so.1.46.1 => /usr/lib/libboost_filesystem.so.1.46.1 (0x00007eff34377000)
libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0x00007eff34172000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007eff33f16000)
libglut.so.3 => /usr/lib/libglut.so.3 (0x00007eff33cd0000)
libGLU.so.1 => /usr/lib/x86_64-linux-gnu/libGLU.so.1 (0x00007eff33a62000)
libGLEW.so.1.5 => /usr/lib/libGLEW.so.1.5 (0x00007eff3380c000)
libboost_thread.so.1.46.1 => /usr/lib/libboost_thread.so.1.46.1 (0x00007eff335f3000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007eff332eb000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007eff33067000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007eff32e51000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007eff32ab1000)
/lib64/ld-linux-x86-64.so.2 (0x00007eff347c4000)
libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007eff3288d000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007eff32555000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007eff32341000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007eff3213e000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007eff31f38000)
libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007eff31d31000)
libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007eff31b26000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007eff31922000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007eff31705000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007eff314fd000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007eff312f9000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007eff310f3000)

任何人都可以识别“alloc_mmap”吗?

最佳答案

我假设你问这个问题是因为你想看看你可以做些什么来提高程序的速度。
如果没有,请忘记这一点。

在 gprof 输出中,重要的数字是第二列,累计秒数,因为如果该例程可以不花时间,那么您的总时间将减少多少。

gprof 的一个问题是它忽略了像 I/O 这样的阻塞时间。由于你的程序在使用alloc_mmap(直接或间接)它是将一个文件映射到内存,所以它是在做I/O,这往往是一笔不小的开销。gprof 看不到它。

还有更多problems with gprof .如果你在 linux 上,你可以尝试像 Zoom 这样的分析器.它按挂钟时间采样,因此它不会对 I/O 视而不见。它还按行/指令提供时间使用百分比,而不仅仅是按功能,因此它将查明代码中的行,如果您可以改进/删除它们,将为您提供最大的加速。(通常这些是函数调用。“ self 时间”很少相关,除非是在繁重的数学运算或紧密的 CPU 循环中,而且无论如何都没有关系。Zoom 会发现它。)

我靠的方法is this .

关于c++ - Gprof 结果 : what is "alloc_mmap"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com