original in en Arnout Engelen
en to CN С ��
Arnout Engelen �Ǻ���Nijmegen��ѧ�����ϵ��ѧ����Ҳ�����簲ȫ��˾TUNIX�Ĺ�Ա���ڿ���ʱ�䣬��ϲ�����ܺʹ����������˹��
GProf ʹ����һ���쳣���Ƿdz���Ч�ķ������Ż�C/C++ �������ܺ�����ʶ���ֵ���Ż��Ĵ��롣һ���İ�������������ʾ��GProf���ͨ��ʶ���Ż������ؼ������ݽṹ����ʵ��Ӧ���еij����3���ӵ�����ʱ�Ż���5��ġ�
���������������ݵ�1982����ڱ������������ر����۴�ᣨthe SIGPLAN Symposium on Compiler Construction�����������������˸���UNIX ƽ̨�ϵ�һ�������ߡ�
event2dot
��һ����·�����¼��������ļ�ת��Ϊͼ�λ���dot���ļ��Ĺ��ߣ�executable which translates a pathalizer 'events' file to a graphviz 'dot' file����
��˵������һ���ļ������ȡ�����¼���Ȼ�����Ƿֱ𱣴�Ϊͼ��(��ҳΪ�ڵ㣬�ҽ�ҳ��ҳ֮���ת����Ϊ�ߣ���Ȼ����Щͼ������Ϊһ�Ŵ��ͼ�Σ�������Ϊͼ�λ���'dot'��ʽ�ļ���
event2dot
����Դ�����������Ϊ���루���55000�����ݣ�������Ҫ���ֶ��ӣ�
real 3m36.316s user 0m55.590s sys 0m1.070s
g++ -pg dotgen.cpp readfile.cpp main.cpp graph.cpp config.cpp -o event2dot
�������ǿ����ٴ�����event2dot
����ʹ������ǰ��ʹ�õIJ������ݡ�����������е�ʱ��event2dot
���еķ������ݻᱻ�Ѽ���������'gmon.out'�ļ��У����ǿ���ͨ������'gprof event2dot
| less'���鿴�����
gprof ����ʾ�����µĺ����Ƚ���Ҫ��
% cumulative self self total time seconds seconds calls s/call s/call name 43.32 46.03 46.03 339952989 0.00 0.00 CompareNodes(Node *,Node *) 25.06 72.66 26.63 55000 0.00 0.00 getNode(char *,NodeListNode *&) 16.80 90.51 17.85 339433374 0.00 0.00 CompareEdges(Edge *,AnnotatedEdge *) 12.70 104.01 13.50 51987 0.00 0.00 addAnnotatedEdge(AnnotatedGraph *,Edge *) 1.98 106.11 2.10 51987 0.00 0.00 addEdge(Graph *,Node *,Node *) 0.07 106.18 0.07 1 0.07 0.07 FindTreshold(AnnotatedEdge *,int) 0.06 106.24 0.06 1 0.06 28.79 getGraphFromFile(char *,NodeListNode *&,Config *) 0.02 106.26 0.02 1 0.02 77.40 summarize(GraphListNode *,Config *) 0.00 106.26 0.00 55000 0.00 0.00 FixName(char *)���Կ�������һ�������Ƚ���Ҫ: ����������ֵ�����ʱ��������ռ���ˡ�
CompareNodes
�����ϣ��� grep �鿴һ������CompareNodes ֻ�DZ�CompareEdges
������һ�ζ���, ��CompareEdges��ֻ��addAnnotatedEdge
���á������Ƕ���������������嵥�С������������Ӧ�������Ż��ĵط��˰ɣ�
����ע�addAnnotatedEdge
������һ����������Ȼ����������ʵ�֣�����ȴʵ�ڲ�����õ��������͡����Ǿ��������� g->edges �ö�����������: �⽫��ʹ�ò��Ҹ��졣
real 2m19.314s user 0m36.370s sys 0m0.940s
% cumulative self self total time seconds seconds calls s/call s/call name 87.01 25.25 25.25 55000 0.00 0.00 getNode(char *,NodeListNode *&) 10.65 28.34 3.09 51987 0.00 0.00 addEdge(Graph *,Node *,Node *)��������ǰռ�ô�������ʱ�ĺ��������Ѿ�������ռ������ʱ�Ĵ�ͷ�ˣ�������һ�����Ż�һ���أ��ýڵ��ϣ����ȡ���ڵ�����
��μ�ֱ�Ǹ���Ľ���:
real 0m3.269s user 0m0.830s sys 0m0.090s
perl -d:DProf mycode.pl
����ʼ����ʹ��dprofpp
���鿴���������������������gcj ���������Java ������Ҳ����ʹ��gprof��Ȼ��Ŀǰ��ֻ֧�ֵ��̵߳�Java ���롣