[LinuxFocus-icon]
<--  | �����  | ������  | �����

������� | ������ | ������ | ��� LF
��� �������� �������� �� ��������� ������: English  ChineseGB  Deutsch  Francais  Russian  

Arnout Engelen
����� Arnout Engelen
<arnouten(Q)bzzt.net>

�� ������:

Arnout Engelen ������ � ������������ ��������� (����������) � �������� � �������� TUNIX ������������������ �� ������������ � ��������. � ��������� ����� �� ���������� ����� � ������ �� ���������.



������� �� �������:
Pukhlyakov Kirill <kirill(at)linuxfocus.org>

����������:

 

����������� C/C++ ���������� � ������� GProf

Profiling with GProf

������:

���� �� ������ �������������� ���������� ������� ��������� ���� �� ����� ��������� ���� ����������� ���, ������� ����������� � ������� 0.04 �������.

GProf ������������� ������� ���� �������������� ����� C/C++ ���������� � ����������� ���������� �������� ����. � �������� �������� ����� �������� ��� ������������� GProf ��� ���������� ������� ���������� ��������� ���������� � 3-� ����� �� 5-�� ������, � ������� ������������� � ����������� 2-� �������� ������.

������� ���������� ����� ���� ������ � 1982 ����, ����� ��� ���� ������������ �� SIGPLAN Symposium on Compiler Construction. � ��������� ����� ��� ����������� ���������� ����������� ��� ���� �������������� UNIX.

_________________ _________________ _________________

 

������ � ��������������

��������� �������������� ���������� ������: ������������ ������� ����� ��������� � ������� � ������ �� ���, ��� ��������� ���������������� ����� ������� ���� ����������� ������ �����. ����� ��������� �����������, ��� ���� �������� ���������� ���������� ���������� ������� - �� ��� �� ���! ����� ������� ���������� ������������ ���� -pg ����������� gcc ( ��� ����� ���� ������ ) � ����� ��������� 'gprof' ��� ������� ������������� �����.  

������������� Pathalizer

� �������� ������� ������� �������� ����������, �������� � pathalizer: ���������� event2dot ����������� pathalizer 'events' ���� � ����������� 'dot' ����.

������ � ������ ���������� - ������ �������� �� ����� � ����������� ���������� ������� � ����� ��� ��������� � ���� ������� ������, ������� ����� �����������.  

������������� ����������

������� ����������, ������� �� ����� �������������� ��������� ��� �������������� � ��������� ����� ����������. ������������ ������� � ����� � ������� ( 55000 ����� ) ���������������.

�� ���� ���������� event2dot �������� ����� 3-� �����, ����������� ��� ������.

real    3m36.316s
user    0m55.590s
sys     0m1.070s
 

��������������

�������������� ���������� ������ '-pg' �� ����� ����������. ��������������� ����������:
g++ -pg dotgen.cpp readfile.cpp main.cpp graph.cpp config.cpp -o event2dot

����� �������� 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. ��� ������� ���������� ������ �������� CompareEdges, ������� � ���� ������� ���������� ������ addAnnotatedEdge - ��� ������ ���� ������������ � ������. �������� �� �����������.

� ������� addAnnotatedEdge ��������������� ��������� ������ ( linked list ). �������� �� �������� �������������, ��� �� ������ ������ �������� ������. ������ g->edges �� �������� ������ ( binary tree ), ��� ��������� ����� ������� �����.  

���������

��� ����� ����� ���������� �����������:
real    2m19.314s
user    0m36.370s
sys     0m0.940s
 

������ �������

��������� ����� gprof � �������:
%   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 *)
�����, ��� �������, ������� �������� ����� �������� ������� ���������� ����������, ������ ����������� ������� �������! ��������� ��� - ������� ������������� NodeList �� NodeHashTable.

��� ������� ��������� ����:

real    0m3.269s
user    0m0.830s
sys     0m0.090s
 

������ C/C++ ����������

����� �������������� ���� ���������� ��� ��������� ����������� ������������ ������ gprof, �������� KProf ( �������� ) � cgprof. �������� �� ��, ��� ����������� ���������� �������� ����� ��������������, � ������ ����� ������� gprof, ���������� �� ��������� ������.
 

�������������� ������ ������

�� ����������� �������������� C/C++ ���������� � ������� gprof, ����� �������� ���� ����� ������ � ��� ������ ������ ���������������� : ��� Perl ����������� ������ Devel::DProf. ��������� ���� ���������� ��������� ������� :perl -d:DProf mycode.pl � �������� ���������� � ������� dprofpp. ���� �� ������������� ���� Java ���������� � ������� gcj �� ������� ������������ gprof, �� ������� ��� � ��������� ����� �������������� ������ ������������� Java ���.  

�����

��������� �������������� �������� ����� ������� ����������, ���������� �����������. � ������������� ���� ������� �� ��������� ����� ������ ���������� � 3m36 �� 5 ������.  

������

 

�������� �������

� ������ ������� ���� �������� �������. �� ���� �������� �� ������ �������� ���� ����������� ��� ����������� ����������� ������ ���������




Webpages maintained by the LinuxFocus Editor team
© Arnout Engelen
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
en --> -- : Arnout Engelen <arnouten(Q)bzzt.net>
en --> ru: Pukhlyakov Kirill <kirill(at)linuxfocus.org>

2005-07-14, generated by lfparser version 2.50