|
![]() |
|
![]() by Arnout Engelen <arnouten(Q)bzzt.net> ¹ØÓÚ×÷Õß: Arnout Engelen ÊǺÉÀ¼Nijmegen´óѧ¼ÆËã»úϵµÄѧÉú£¬Ò²ÊÇÍøÂ簲ȫ¹«Ë¾TUNIXµÄ¹ÍÔ±¡£ÔÚ¿ÕÏÐʱ¼ä£¬Ëûϲ»¶³¤Åܺʹµ×à¸ßÒôÈø¿Ë˹¡£ Ŀ¼: |
[an error occurred while processing this directive]
ʹÓÃGProfÀ´ÓÅ»¯ÄãµÄC/C++³ÌÐò![]() ÕªÒª: ÔÚÓÅ»¯³ÌÐòµÄʱºò£¬Òª¼Çס£ºÔÚÖµµÃÓÅ»¯µÄµØ·½ÓÅ»¯£¡Ã»ÓбØÒª»¨Éϼ¸¸öСʱÀ´ÓÅ»¯Ò»¶Îʵ¼ÊÉÏÖ»ÔËÐÐ0.04ÃëµÄ³ÌÐò¡£ 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 ´úÂë¡£
Ö÷Ò³ÓÉLinuxFocus±à¼×éά»¤
© Arnout Engelen "some rights reserved" see linuxfocus.org/license/ http://www.LinuxFocus.org |
·ÒëÐÅÏ¢:
|
2005-05-07, generated by lfparser version 2.52