易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux学习 寻找程序热点(一):gprof

gprof介绍
gprof是GNU profiler工具,存在于binutils工具包。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。
gprof 实现原理:
gprof并不神奇,在编译和链接程序的时 候(使用 -pg 编译和链接选项),gcc 在你应用程序的每个函数中都加入了一个名为mcount(or“_mcount”, or“__mcount”)的函数,也就是说-pg编译的应用程序里的每一个函数都会调用mcount, 而mcount会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。这张调用图也保存了所有与函数相关的调用时间,调用次数等等的所有信息。
GPROF的基本使用方法如下:
1.使用GCC加上-pg选项编译程序
2.执行程序,会生成gmon.out
3.使用gprof分析gmon.out文件,得出统计资料
4.GPROF不支持动态链接库和多线程
范例:
#include<stdio.h>
void funca()
{
    int i  = 0;
    int n = 0;
    for(i = 0;i < 10000000;i++)
    {
        n++;
        n--;
    }
}
void funcb()
{
    int i  = 0;
    int n = 0;
    for(i = 0;i < 10000000;i++)
    {
        n++;
        n--;
    }
}
int main(int argc,char *argv[])
{
    int i = 0;
    for(i = 0;i < 10;i++)
    {
        funca();
    }
    funcb();
    return 0;
}
编译:
$ gcc hello.c -pg -o hello
运行:
$ ./hello
生成gmon.out问件
使用gprof进行解析:
$ gprof hello gmon.out -p
Flat profile:
Each sample counts as 0.01 seconds.
  %         


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

Eclipse+QT4.6(Linux)

1、首先是QT4.6的安装,参见QT4.6+QT Creator1.3安装(Linux)
2、再参见Eclipse+Qt4配置步骤(Linux版)
  将QT4.6的路径,如:
/opt/qtsdk-2009.05/qt/bin/
3、OK!
4、可以同时使用Eclipse和QT Creator 两个IDE了,呵呵。 ......

Linux内核及ARM的内存管理

欢迎回到Kernel中……
继续说__vet_atags函数,这个函数仍旧定义在arch\arm\kernel\head-common.s文件中:
/* Determine validity of the r2 atags pointer.  The heuristic requires
 * that the pointer be aligned, in the first 16k of physical RAM and
 * that the ATAG_CORE marker ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号