C C++ ÇÁ·Î±×·¥ ÃÖÀûÈ­
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>c_cpp_profile



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

article/c_cpp_profile
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<article lang="ko"> 
 
<!--           --> 
<!-- ¹®¼­ Á¤º¸ --> 
<!--           --> 
<articleinfo> 
    <title>GProf profiler¸¦ ÀÌ¿ëÇÑ C/C++ ÇÁ·Î±×·¡¹Ö ÃÖÀûÈ­</title> 
    <author> 
        <surname>Arnout Engelen</surname> 
 
        <affiliation> 
            <address> 
                <email>arnouten@bzzt.net</email> 
            </address> 
        </affiliation> 
    </author> 
    <othercredit role="translator"> 
        <surname>À±»ó¹è</surname> 
        <affiliation> 
            <address> 
                <email>dreamyun@yahoo.co.kr</email> 
            </address> 
        </affiliation> 
    </othercredit> 
    <revhistory> 
        <revision> 
            <revnumber>0.8</revnumber> 
            <date>2005³â 5¿ù 7ÀÏ 23½Ã</date> 
            <revremark>ÃÖÃÊ ¹®¼­ÀÛ¼º</revremark> 
        </revision> 
    </revhistory> 
</articleinfo> 
 
 
<!--                                                                 --> 
<!-- ¼½¼Ç ½ÃÀÛ                                                       --> 
<!--                                                                 --> 
<section> 
    <title></title> 
    <para>     
        Áö±ÝÀº Çϵå¿þ¾îÀÇ ¼º´ÉÀÌ ¿ö³«¿¡³ª ÁÁ¾ÆÁøµ¥´Ù°¡ ÄÄÆÄÀÏ·¯ ¿ª½Ã ±×¿¡ ¹ß¸ÂÃß¾î 
        ÃÖÀûÈ­µÇ¾îÀֱ⠶§¹®¿¡, ¼º´Éº¸´Ù °³¹ß¼Óµµ¿Í À¯Áöº¸¼ö¸¦ Áß¿ä½ÃÇÏ´Â °æ¿ì°¡  
        ¸¹°ÚÁö¸¸ ¿©ÀüÈ÷ ÃÖÀûÀÇ ¼º´ÉÀ» ¿ä±¸ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ¾ß ÇÏ´Â Çʿ䰡  
        »ý±ä´Ù. ÀÌ·² °æ¿ì ÇÁ·Î±×·¥ ÃÖÀûÈ­´Â Çʼö ÀûÀÎ ÀÛ¾÷À̵ȴÙ. 
    </para>     
    <para>     
        ÃÖÀûÈ­¸¦ ÅëÇØ¼­ ¾î¶² ÇÔ¼ö°¡ 0.04ÃÊ Á¤µµ ¼öÇà½Ã°£À» ´ÜÃà½ÃÄ×´Ù°í °¡Á¤ÇØ º¸ÀÚ. 
        °íÀÛÇØ¾ß 0.04ÃÊ ¾Æ²¸¼­ ¹¹ÇÏ´À³Ä¶ó°í »ý°¢ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸ ÀÌ ÇÔ¼ö°¡ 1ÃÊ µ¿¾È         100¹ø È£ÃâµÈ´Ù°í ÇÏ¸é ¹«·Á 4Ãʸ¦ ¾Æ³¢°Ô µÈ´Ù. ÄÄÇ»ÅÍ·Î ¾î¶²ÀÏÀ» ó¸®Çϴµ¥  
        4Ãʶó¸é °ÅÀÇ ¹«ÇÑ¿¡ °¡±î¿î ½Ã°£À̶ó°í º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. 
    </para>     
    <para>     
        ¹®Á¦´Â ÇϳªÀÇ ÇÁ·Î±×·¥Àº ÀÛ°Ô´Â ¼ö½Ê¿¡¼­ ¸¹°Ô´Â ¼ö¹é/¼öõ°³ÀÇ ÇÔ¼ö·Î ÀÌ·ç¾î 
        Áú°ÍÀε¥, ÀÌÁß ¾î¶² ÇÔ¼ö¸¦ ¼±ÅÃÇØ¼­ ÃÖÀûÈ­¸¦ ½ÃÄÑÁà¾ß ÇÏ´ÂÁöÀÌ´Ù. 
        ½Ã°£¸¸ ÃæºÐÇÏ´Ù¸é ¸ðµç ÇÔ¼ö¸¦ ¶óÀδÜÀ§·Î ÇϳªÇϳª ºÐ¼®Çذ¡¸é¼­ ÃÖÀûÈ­  
        ½Ãų ¼öµµ ÀÖ°ÚÁö¸¸, ½Ã°£µµ ÃæºÐÇÏÁö ¾ÊÀ» »Ó´õ·¯, È¿°ú´ëºñ ³Ê¹«³ª ¸¹Àº ½Ã°£ÀÌ 
        ¼Ò¸ðµÉ ¼öµµ ÀÖ´Ù. 
    </para>     
    <para>     
        ¿©±â¿¡¼­´Â ÀÌ·¯ÇÑ ¹®Á¦ÀÇ ÇØ°áÀ» À§ÇØ <emphasis>gprop</emphasis>¶ó´Â ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â ¹æ¹ý¿¡  
        ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ÀÌ ÅøÀ» ÀÌ¿ëÇÏ¸é °³¹ßÀÚ´Â ÇÁ·Î±×·¥ÀÇ °¢ ÇÔ¼öº°·Î  
        È£Ãâºóµµ¿Í ¼Ò¸ðµÈ ½Ã°£µî¿¡ ´ëÇÑ ¼º´ÉÁ¤º¸¸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù. 
    </para>     
    <para>     
        ¹®¼­ÀÇ ¿ø¹®Àº <ulink url="http://www.linuxfocus.org/English/March2005/article371.shtml">linuxfocus</ulink>¸¦ È®ÀÎÇϱ⠹ٶõ´Ù.  
    </para>     
</section> 
<section> 
    <title>grpop¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥ ÃÖÀûÈ­</title> 
    <section> 
        <title>gpropÀÇ °³³ä</title> 
        <para> 
            gropÀÇ ÀÛµ¿¹æ½ÄÀº °£´ÜÇÏ´Ù. ÇÁ·Î±×·¥ ¼öÇà½Ã°£µ¿¾È °¢ ÇÔ¼öÀÇ È£ÃâȽ¼ö¿Í  
            ÇÔ¼ö È£Ãâ½Ã ÁøÀÔ¿¡¼­ Á¾·áÇÒ ¶§ ±îÁöÀÇ ½Ã°£À» ±â·ÏÇØµÎ°í ÀÌ Á¤º¸¿¡ ´ëÇÑ  
            Åë°è¸¦ Á¦°øÇÏ´Â ¹æ½ÄÀÌ´Ù.  
        </para> 
        <para> 
            Àú·¯ÇÑ ÀÏÀ» Çϱâ À§Çؼ­´Â °¢ ÇÔ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù Ƚ¼ö¸¦ ¼¼°ÔÇϰí, ½Ã°£ÇÔ¼ö¸¦ 
            ÀÏÀÏÀÌ ³Ö¾îÁà¾ß ÇÏÁö ¾Ê°Ú´À³Ä°í »ý°¢ÇÒ ¼ö ÀÖ°ÚÁö¸¸, °ÆÁ¤ÇÒ ÇÊ¿ä ¾ø´Ù.  
            ÄÄÆÄÀϽà <emphasis>-pg</emphasis>¿É¼Ç¸¸ ÁÖ¸é ¾Ë¾Æ¼­ Àú·¯ÇÑ Á¤º¸µéÀÌ »ý¼ºµÈ´Ù.  
            ±× ÈÄ °³¹ßÀÚ´Â gprop¸¦ ½á¼­ Åë°èÁ¤º¸¸¦ ¾ò¾î¿À±â¸¸ ÇÏ¸é µÈ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>Pathalizer¸¦ ÅëÇÑ Å×½ºÆ®</title> 
        <para> 
            ÀÌÇØ¸¦ ½±°Ô Çϱâ À§Çؼ­ <ulink url="http://pathalizer.bzzt.net/">pathalizer</ulink>À̶ó´Â  
            ÇÁ·Î±×·¥À» ÅëÇØ¼­ Å×½ºÆ®¸¦ ÇØº¸µµ·Ï ÇϰڴÙ. 
        </para> 
        <para> 
            ÀÏ´Ü À§ ÇÁ·Î±×·¥À» ¹Þ¾Æ¼­ ÄÄÆÄÀÏ Çϵµ·Ï ÇÏÀÚ. ÄÄÆÄÀÏ ¹æ¹ýÀº °£´ÜÇÏ´Ï ¼³¸íÇÏÁö 
            ¾Êµµ·Ï ÇϰڴÙ. 
        </para> 
    </section> 
    <section> 
        <title>ÇÁ·Î±×·¥ ¼öÇà ½Ã°£</title> 
        <para> 
            ÇÁ·Î±×·¥ÀÇ ¼öÇà ½Ã°£À» ÃøÁ¤Çϱâ À§Çؼ­ ÇÊÀÚ´Â apacheÀÇ ·Î±×ÆÄÀÏÀ» pathalizer¸¦  
            ÅëÇØ¼­ ºÐ¼®Çغ¸µµ·Ï Çß´Ù. ÀÌ apache·Î±×ÆÄÀÏÀº ¾à 500000ÁÙÀÇ Á¤º¸¸¦ Æ÷ÇÔÇ졒  
            ÀÖ´Ù.  
            <screen> 
[root@ns src]# time ./event2dot logfile 
real    3m36.316s 
user    0m55.590s 
sys     0m1.070s 
            </screen> 
        </para> 
    </section> 
    <section> 
        <title>profiling</title> 
        <para> 
            ±×·³ À§ÀÇ ÇÁ·Î±×·¥À» ºÐ¼®Çϱâ À§Çؼ­ profile Á¤º¸¸¦ ³²°Üº¸µµ·Ï ÇϰڴÙ. ¾Æ·¡¿Í  
            °°ÀÌ -pg ¿É¼ÇÀÌ »ç¿ëµÇµµ·Ï MakefileÀ» ¼öÁ¤Çϵµ·Ï ÇÏÀÚ.     
            <screen> 
all: event2dot apache2events 
 
OPTIONS=-O2 -g -pg 
 
apache2events: config.o apache2events.o 
... 
... 
            </screen> 
            ´Ù½Ã make¸¦ ½ÃµµÇؼ­ Àç ÄÄÆÄÀÏÀ» Çϰí <emphasis>./event2dot apache_access_log</emphasis>¸¦ ¼öÇàÇϵµ·Ï ÇÑ´Ù.  
            ÇÁ·Î±×·¥À» ¼öÇàÇÏ°í ³ª¸é ÇØ´ç µð·ºÅ丮¿¡ <emphasis>gmon.out</emphasis>¶ó´Â  
            ÆÄÀÏÀÌ »ý¼ºµÈ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ ´ÙÀ½°ú °°ÀÌ grpof¸¦ ÀÌ¿ëÇØ¼­  
            °¢ ÇÔ¼öº° ¼º´ÉÁ¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. 
            <screen> 
# gprof ./event2dot | less 
 % 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 *) 
            </screen> 
            ¿©±â¿¡¼­ °¡Àå Áß¿äÇÑ Çʵå´Â ù¹øÂ° Çʵå·Î, ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µ¿¾È ÇØ´çÇÔ¼ö°¡ ¼ÒºñÇÑ ½Ã°£ÀÇ  
            ¹éºÐÀ²À» º¸¿©ÁØ´Ù.  
        </para> 
    </section> 
    <section> 
        <title>gprof °á°ú¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¥ ÃÖÀûÈ­</title> 
        <para>     
            ±×·³ ÀÌÁ¦ ÇÁ·Î±×·¥À» ÃÖÀûÈ­¸¦ ÇØº¸µµ·Ï ÇÏÀÚ. ¸ðµç ÇÔ¼ö¸¦ ÃÖÀûÈ­ Çϸé ÁÁ°ÚÁö¸¸ ¿ª½Ã ½Ã°£´ëºñ È¿À²ÀÇ 
            ¹®Á¦°¡ ÀÖÀ½À¸·Î °¡´ÉÇϸé Á¶±×¸¶ÇÑ ¼öÁ¤À¸·Î Å« È¿°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â ÇÔ¼ö¸¦ ¼±ÅÃÇÏ´Â°Ô ÁÁÀ» °ÍÀÌ´Ù.  
            ±×·¸´Ù¸é ¿©·¯¹ø È£ÃâµÇ´Â ÇÔ¼öÁß¿¡¼­ ¼öÇà½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ÇÔ¼ö¸¦ ¼±º°Çؼ­ ¼öÁ¤ÇÏ´Â°Ô  
            °¡Àå ÁÁÀ» °ÍÀÌ´Ù.  
        </para>     
        <para>     
            ¿©±â¿¡¼­ ¿ì¸®´Â CompareNodes¶ó´Â ÇÔ¼ö°¡ ¸Å¿ì ¸¹Àº ½Ã°£À» ¼ÒºñÇϰí ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.  
            ±×·¡¼­ CompareNodesÇÔ¼ö¸¦ ºÐ¼®Çؼ­ ºñÈ¿À²ÀûÀÎ ºÎºÐÀ» °³¼±À» Çϱâ·Î °áÁ¤Çß´Ù.  
        </para>     
        <para>     
            ¸î¹øÀÇ ºÐ¼®À» ÅëÇØ¼­ ÀڷᱸÁ¶ÀÇ À¯Áö¸¦ À§Çؼ­ »ç¿ëÇÏ´Â ¸µÅ©µå¸®½ºÆ®°¡ ¸Å¿ì ºñÈ¿À²ÀûÀ¸·Î µÇ¾îÀÖ´Ù´Â 
            °ÍÀ» ¹ß°ßÇϰí e-edges¸¦ ÀÌÁøÆ®¸®·Î º¯°æÇϱâ·Î °áÁ¤À» Çß´Ù.     
        </para>     
        <para>     
            Äڵ带 º¯°æÇÑ´ÙÀ½ Å×½ºÆ®¸¦ ÇѰá°ú ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©Áá´Ù. 1ÃÊÀÌ»óÀÇ ½Ã°£À» ´ÜÃà½ÃÄ×À½À»  
            ¾Ë ¼ö ÀÖ´Ù. 
            <screen> 
real    2m19.314s 
user    0m36.370s 
sys     0m0.940s 
            </screen> 
        </para>     
    </section> 
    <section> 
        <title>ÃÖÀûÈ­ ÈÄ gprof °á°ú</title> 
        <para> 
            ´ÙÀ½Àº ÄÚµå ÃÖÀûÈ­ ÈÄ ÇÁ·Î±×·¥ÀÇ gprof °á°ú´Ù. 
            <screen> 
%   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 *) 
            </screen> 
            °¢ ÇÔ¼ö¿¡¼­ 2¹è°¡±îÀÌ ½Ã°£À» Àý¾àÇÑ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>´Ù¸¥ profile ÇÁ·Î±×·¥µé</title> 
        <para> 
            GUIÈ­¸éÀ» ¼±È£ÇÏ´Ù¸é  
            <ulink url="http://kprof.sf.net/">kProf</ulink>¿Í  
            <ulink url="http://mvertes.free.fr/">cgprof</ulink>cgprof°°Àº ÇÁ·Î±×·¥µµ ÀÖÀ¸´Ï °ü½ÉÀÖ´Ù¸é »ç¿ëÀ» ÇØº¸±â ¹Ù¶õ´Ù. 
        </para> 
    </section> 
</section> 
</article> 
 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.