gprof(GNU profiler)是GNU binutils工具集中的自带工具。如果使用GCC编译器,可以使用它分析程序性能:函数调用时间、调用次数和调用关系,找出程序的瓶颈所在。 使用gprof分析程序性能,需要在编译的时候添加-pg编译选项。 典型的GCC编译指令如下: gcc -pg -o test test.c 如果使用CMake,指令如下: set(CMAKE_C_FLAGS...
从上面的输出我们能明显的看出来,main调用了b函数,而b函数分别调用了a和c函数。由于我们的函数只是简单的输出了一个字串,故每个函数的消耗时间都是0秒。 使用gprof分析程序 gprof介绍 gprof是一个GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间,也可以显示“...
allocator 正是值C运行时库的内存管理模块, 它响应用户的分配请求, 向内核申请内存, 然后将其返回给用户程序。为了保持高效的分配, allocator 一般都会预先分配一块大于用户请求的内存, 并通过某种算法管理这块内存. 来满足用户的内存分配要求, 用户 free 掉的内存也并不是立即就返回给操作系统, 相反, allocator 会...
接下来,我们需要使用性能检测工具,也就是使用某个Profiler来差看一下我们程序的运行性能。如:Java的JProfiler/TPTP/CodePro Profiler,GNU的gprof,IBM的PurifyPlus,Intel的VTune,AMD的CodeAnalyst,还有Linux下的OProfile/perf,后面两个可以让你对你的代码优化到CPU的微指令级别,如果你关心CPU的L1/L2的缓存调优,那么你...
1.7. Intel VTune Profiler Intel VTune Profiler:这是一个功能强大的性能分析工具,支持多语言,适用于Intel处理器,可以分析CPU使用率、内存访问、多线程性能等。 1.8. OProfile OProfile是一个系统级的性能分析工具,可以分析整个系统的性能,包括用户空间和内核空间的代码。它使用硬件性能计数器来收集数据。
上面介绍的几种处理器特性对软件的性能有很大的影响,然而依赖时钟进行定期采样的 profiler 模式无法揭示程序对这些处理器硬件特性的使用情况。处理器厂商针对这种情况,在硬件中加入了 PMU 单元,即 performance monitor unit。PMU 允许软件针对某种硬件事件设置 counter,此后处理器便开始统计该事件的发生次数,当发生的次数超...
Ftrace 跟踪工具由性能分析器(profiler)和跟踪器(tracer)两部分组成 性能分析器:用来提供统计和直方图数据(需要 CONFIG_ FUNCTION_PROFILER=y) 函数性能分析 直方图 跟踪器:提供跟踪事件的详情 函数跟踪(function) 点跟踪(tracepoint) kprobe uprobe 函数调用关系(function_graph) ...
Intel VTune Profiler:这是一个功能强大的性能分析工具,支持多语言,适用于Intel处理器,可以分析CPU使用率、内存访问、多线程性能等。 1.8. OProfile OProfile是一个系统级的性能分析工具,可以分析整个系统的性能,包括用户空间和内核空间的代码。它使用硬件性能计数器来收集数据。
gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。
cmake . make sudo make install 7. Valgrind Valgrind是一个非常可靠的内存调试器,它为软件分析提供了许多额外的工具。它在Linux和Mac上都可以运行。此外,您可以将它用作框架,并创建像剖析器(Profiler)这样的动态分析工具。总的来说,Valgrind是专业人士的上佳选择,因为它拥有丰富的功能特性和众多工具,可以在程序运...