Profile Feedback À» ÀÌ¿ëÇÑ ¾îÇø®ÄÉÀÌ¼Ç ¼º´É Çâ»ó
Darryl Gove, Chris Aoki  
profile feedbackÀº ·±Å¸Àӽÿ¡ Äڵ尡 ÀÛµ¿ÇÏ´Â Á¤º¸¸¦ ÄÄÆÄÀÏ·¯¿¡ Á¦°øÇÏ´Â À¯¿ëÇÑ ¸ÞÄ«´ÏÁòÀÔ´Ï´Ù. ÀÌ Á¤º¸´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ÆÛÆ÷¸Õ½º Çâ»ó¿¡ Å« µµ¿òÀ» ÁÝ´Ï´Ù. profile feedback Àº ÆÛÆ÷¸Õ½º Çâ»ó¿¡ È¿°ú°¡ ÀÖÀ»¶§¿¡¸¸ °¡Ä¡°¡ ÀÖ½À´Ï´Ù.

ÄÄÆÄÀÏ·¯¿¡°Ô µ¥ÀÌŸ¸¦ Á¦°øÇϱâÀü¿¡ ´ëÇ¥ÀûÀÎ workload¸¦ ¼±ÅÃÇϴµ¥ ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÕ´Ï´Ù. ´ëÇ¥ÀûÀÎ workload´Â tcov ³ª performace analyzer °°Àº ÅøÀ» ÅëÇØ ¼öÁýµÈ Á¤º¸¸¦ °Ë»çÇÏ¿© ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

¼Ò°³

¾îÇø®ÄÉÀ̼ÇÀÌ ÄÄÆÄÀϵɶ§ ÄÄÆÄÀÏ·¯´Â ÃÖÀûÈ­µÈ ¸í·É¾î »ç¿ë°ú ÄÚµåÀÇ ÃÖÀûÈ­µÈ ¹è¿­À» À§ÇØ ÃÖ¼±À» ´Ù ÇÏ°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷Àº ¼Ò½ºÄڵ忡 ¹ÙÅÁÀ» µÎ°í ÀÌ·ç¾î Áý´Ï´Ù. ±×·¯³ª ¼Ò½º Äڵ忡´Â ÄÚµåÀÇ µ¿ÀûÀÎ µ¿ÀÛ¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖÁö ¾Ê½À´Ï´Ù;±×·¡¼­ ÄÄÆÄÀÏ·¯´Â 'best-guess'¶ó´Â ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.

ÀÌ ¹æ¹ýÀ» ÅëÇØ Äڵ带 ¹è¿­ÇÏ°í ·çÆ¾µéÀÌ Æ÷ÇԵǾî Áö°í ¾î¶°ÇÑ ÄÚµåµéÀÌ ÀÚÁÖ ½ÇÇàµÇ°í ÇÏ´Â °ÍµéÀ» °áÁ¤ÇÏ°Ô µË´Ï´Ù.

ÄÄÆÄÀÏ·¯°¡ Äڵ带 ´Ù·ê¶§ °Þ´Â ´ëÇ¥ÀûÀÎ ¿¹¸¦ ¿¹Á¦ 1¹øÀ» ÅëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù:

void calculate(...)
{
if(...some condition...)
{
     //do calculation
     ...
}
A
else
{
    //do caclulation
    ...
}
B
//do more work
...
}

ÄÚµå ¿¹Á¦ 1

¿¹Á¦ 1¹øÀÇ ÄÚµå´Â ÄÄÆÄÀÏ·¯°¡ ¸Å¿ì Èï¹Ì·Î¿î °áÁ¤À» ÇÏ´Â °ÍÀ» º¸¿© ÁÝ´Ï´Ù; Äڵ带 ¹è¿­ÇÏ´Â ´Ù¾çÇÑ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÄÄÆÄÀÏ·¯´Â A¿Í B¸¦ ±âº»ÀûÀ¸·Î makeÇØ¾ß ÇÒ±î¿ä ¾Æ´Ï¸é Äڵ带 Àç¹è¿­Çؼ­ ¼­·Î °°Àº ÆÛÆ÷¸Õ½º¸¦ °®µµ·Ï ÇØ¾ß ÇÒ±î¿ä?

¹®Á¦´Â ÄÄÆÄÀÏ·¯°¡ ¾î¶»°Ô ¼ö¸¹Àº ¹æ¹ýÀÌ Á¸ÀçÇÏ´Â ÄÚµå ¹è¿­¹æ½ÄÀ» °áÁ¤ÇÏ¿© ÃÖ»óÀÇ ¹æ¹ýÀ¸·Î ¹è¿­ÇÒ°ÍÀÌ³Ä ÇÏ´Â °Í ÀÔ´Ï´Ù. ´Ù¸¥ °áÁ¤µéÀÇ ¿¹¸¦ º¸°Ú½À´Ï´Ù.:

  • ÀÚÁÖ ½ÇÇàµÇ´Â ·çƾÀÌ ÀζóÀεǾî Áø´Ù¸é ¼º´É Çâ»óÀÌ °¡´ÉÇÒ °ÍÀΰ¡?
  • Äڵ尡 ¾î¶»°Ô ¸Þ¸ð¸®¿¡ ¹è¿­µÇ¾î Á®¼­ ij½Ã¸¦ Á»´õ È¿°úÀûÀ¸·Î »ç¿ëÇÒ °ÍÀΰ¡?
  • ÀÚÁÖ ½ÇÇàµÇ´Â ·çÇÁµéÀ» ºÐ¸®ÇÏ´Â °ÍÀÌ ´õ ÁÁÀ»°ÍÀΰ¡?

ÀÌ·¯ÇÑ °áÁ¤µéÀº ¿ÀÁ÷ Á¤ÇüÈ­µÈ ¹æ¹ý¿¡ ÀÇÇØ¼­¸¸ °ü¸®µÇ¾î Áö°í ÄÄÆÄÀÏ·¯´Â ·±Å¸Àӽÿ¡ ÇÁ·Î±×·¥¿¡ ¾î¶°ÇÑ ÀÏÀÌ ¹ß»ýÇÏ´ÂÁö¿¡ ´ëÇØ ÀüÇô ¾ËÁö ¸øÇÕ´Ï´Ù. ¾î·µç profile feedbackÀ̶õ ¸ÞÄ«´ÏÁòÀ» ÅëÇØ ÄÄÆÄÀÏ·¯´Â ´ëÇ¥ÀûÀÎ 'training' µ¥ÀÌŸ¼ÂÀ» ½ÇÇàÇÏ¿© ÇÁ·Î±×·¥ÀÌ ·±Å¸Àӽÿ¡ ¹ß»ýÇÏ´Â Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù.

profile feedbackÀ» ÀÌ¿ëÇÏ¿© º¥Ä¡¸¶Å© ½ºÀ­ÀÎ SPEC CPU2000À¸·Î ¼º´ÉÀ» Ã¼Å©ÇØº» °á°ú ºÎµ¿¼Ò¼ýÁ¡ ¿¬»ê¿¡¼­ 7%, Á¤¼ö ¿¬»ê¿¡¼­ 16% Á¤µµÀÇ Æò±ÕÀûÀÎ ¼º´ÉÇâ»óÀÌ ÀÖ¾ú½À´Ï´Ù. ½ºÀ­¿¡ Æ÷ÇÔµÈ ÄÚµå´Â ¾Æ¿¹ ¼º´É Çâ»óÀÌ ¾ø´Â °æ¿ìµµ ÀÖ¾ú°í ¾öû³­ ¼º´ÉÇâ»óÀ» º¸¿©ÁØ °æ¿ìµµ ÀÖ¾ú½À´Ï´Ù.


profile feedbackÀ» ÀÌ¿ëÇÑ ºôµù

profile feedback´Â ¾ÆÁÖ ÂªÀº ½Ã°£µ¿¾È ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ°í ±×µ¿¾È¿¡ ÇÁ·Î±×·¥¿¡ ¹ß»ýÇÑ µ¥ÀÌŸ¸¦ ¼öÁýÇÏ´Â °ÍÀÔ´Ï´Ù. ÄÄÆÄÀÏ·¯´Â ÀÌ µ¥ÀÌŸ¸¦ ÀÌ¿ëÇÏ¿© ÃÖÀûÈ­ ¹æ¹ýÀ» °áÁ¤ÇÏ°Ô µË´Ï´Ù.

profile feedbackÀÇ Ã³¸® ¼ø¼­´Â:

  1. ¹ÙÀ̳ʸ®´Â -xprofile=collect Ç÷¡±×¸¦ ÀÌ¿ëÇÏ¿© ºôµåÇÕ´Ï´Ù. ÀÌ Ç÷¡±×´Â ½ºÆä¼ÈÇÑ ¹öÀüÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÏ°í ½ÇÇàÁß¿¡ ¹ß»ýÇÑ µ¥ÀÌŸ¸¦ ¼öÁýÇÕ´Ï´Ù.
  2. ±×¶§ ¾îÇø®ÄÉÀ̼ÇÀº 'training' workload¿Í ÇÔ²² ½ÇÇàµË´Ï´Ù. 'training' workload´Â ¾îÇø®ÄÉÀ̼ÇÀÌ ½ÇÁ¦·Î ¼öÇàÇØ¾ßÇÒ ´ëÇ¥ÀûÀÎ ÀÛ¾÷ÀÌÁö¸¸ ½Ã°£ÀÌ ÁøÂ¥ workload¸¸Å­ ¿À·¡ °É¸®Áö ¾Ê´Â ÀÛ¾÷ÀÔ´Ï´Ù.
  3. ¹ÙÀ̳ʸ®¸¦ -xprofile=use Ç÷¡±×¸¦ »ç¿ëÇÏ¿© ¸®ºôµåÇÕ´Ï´Ù. ÀÌ Ç÷¡±×´Â ¼öÁýµÈ µ¥ÀÌŸ¸¦ ÀÌ¿ëÇØ ÇÁ·Î±×·¥À» ÃÖÀûÈ­Çϴµ¥ »ç¿ëµË´Ï´Ù.

Áï profile feedbackÀ» »ç¿ëÇÏ¸é »ç¿ëÇÏÁö ¾Ê¾ÒÀ»¶§ º¸´Ù µÎ¹èÀÇ ÀÛ¾÷ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ¿Ö³ÄÇÏ¸é ºôµå´Â ÄÄÆÄÀÏ·¯ÀÇ µÎ°¡Áö °úÁ¤À» °ÅÄ¡°í °Å±â´Ù ´õÇØ¼­ ¾à°£ÀÇ ½ÇÇà½Ã°£ÀÌ ´õÇØÁö±â ¶§¹®ÀÔ´Ï´Ù. ·±Å¸Àӽÿ¡ ¾òÀ» ¼ö ÀÖ´Â ÆÛÆ÷¸Õ½º Çâ»óÀº º¹ÀâÇÑ ºôµå °úÁ¤À» ÇÊ¿ä·Î ÇÒ °¡Ä¡°¡ ÀÖ½À´Ï´Ù.

´ëÇ¥ÀûÀÎ workload Á¤Çϱâ

profile feedbackÀ» ÀÌ¿ëÇØ ºôµåÇÏ´Â µ¥¿¡´Â ·±Å¸Àӽÿ¡ ¾îÇø®ÄÉÀ̼ÇÀÇ Çൿ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò±â À§ÇÑ ´ëÇ¥ÀûÀÎ 'training' workload°¡ ÇÊ¿äÇÕ´Ï´Ù. workloadÀÇ Å°Æ÷ÀÎÆ®µéÀº ´ÙÀ½°ú °°½À´Ï´Ù:

  • ÀÛ¾÷½Ã°£ÀÌ Âª¾Æ¾ß ÇÕ´Ï´Ù. ±ä½Ã°£ÀÇ ÀÛ¾÷Àº ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
  • workload´Â ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ðµç Áß¿äÇÑ ÀÛ¾÷À» ±¸ÇöÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. Sun Studio Performance Analyzer ¶Ç´Â tcov(1) °°Àº ÅøÀº training workload°¡ ÄÚµåÀÇ °¡Àå Áß¿äÇÑ ºÎºÐÀ» Ä¿¹öÇÏ´ÂÁö °Ë»çÇØ º¼ ¼ö ÀÖ°í, ½ÇÁ¦ workload¿Í ºñ½ÁÇÑÁö¿¡ ´ëÇØ¼­µµ Á¶»ç°¡ °¡´ÉÇÕ´Ï´Ù.
  • ¸î°¡Áö training workload´Â ½ÇÁ¦·Î Àüü ÄÚµåÀÇ ¼º´ÉÇâ»ó¿¡ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.

¸î°¡Áö À§ÇèÇÑ Á¡Àº À߸øµÈ 'training' workload¸¦ »ç¿ëÇÒ °æ¿ì ¿ÀÈ÷·Á ¼º´ÉÀ» ¶³¾î¶ß¸°´Ù´Â Á¡ÀÔ´Ï´Ù. ¿Ö³ÄÇÏ¸é ´ÙÀ½°ú °°Àº µÎ°¡Áö ÀÌÀ¯ ¶§¹®ÀÔ´Ï´Ù:

  • 'training' workload´Â Àüü ¾îÇø®ÄÉÀ̼ÇÀ» Ä¿¹öÇØÁÖÁö ¸øÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
  • ¹®Á¦°¡ ÀÖ´Â ¿öÅ©·ÎµåÀÇ µ¿ÀÛÀº ½ÇÁ¦ 'training' workloadÀÇ µ¿ÀÛ°ú´Â ½É°¢ÇÏ°Ô ´Ù¸¨´Ï´Ù.

µÎ°¡Áö °æ¿ì ¸ðµÎ ´Ù¸¥ 'training' workload¸¦ Ãß°¡ÇÏ¿© ¹®Á¦ ÀÖ´Â workloadÀÇ ¼º´ÉÇâ»óÀ» °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. Äڵ带 º¸°Å³ª ´Ù¾çÇÑ ·çƾÀÇ ½ÇÇà½Ã°£À» °Ë»çÇÏ¿© ÆÛÆ÷¸Õ½ºÀÇ Â÷À̰¡ ¾îµð¼­ ¿À´ÂÁö ¾Ë¾Æ º¼ ¼öµµ ÀÖ½À´Ï´Ù. 'training' workload°¡ ´Ù¸¥ workloadÀÇ ½ÇÇàÀ» ´À¸®°Ô ÇÒ°æ¿ì´Â µå¹´´Ï´Ù. ¿ÀÈ÷·Á 'training' workload°¡ ƯÁ¤ºÎºÐÀÇ ÃÖÀûÈ­°¡ ÇÊ¿ä ¾øÀ½À» ¾Ë·Á ÁÙ ¼ö ÀÖ°í Ãß°¡ÀûÀÎ 'training' workload¸¦ ÅëÇØ¼­ ´Ù¸¥ workload°¡ ÆÛÆ÷¸Õ½º¿¡ ¿µÇâÀ» ÁÖÁö ¾ÊÁö ¾ÊÀ½À» ¾Ë ¼öµµ ÀÖ½À´Ï´Ù.


profile feedbackÀÇ ÀÌÀÍ

´õ ¸¹Àº Á¤º¸¸¦ ÄÄÆÄÀÏ·¯°¡ °¡Áú ¼ö·Ï Á» ´õ ÁÁÀº ÃÖÀûÈ­¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ðµç ÃÖÀûÈ­ °úÁ¤À» ÅëÇØ¼­ ¾î¶² ÄÚµå´Â ¾öû³ª°Ô Çâ»óµÉ ¼ö ÀÖ°í ¶Ç ±×·¸Áö ¾ÊÀº °æ¿ìµµ ÀÖ½À´Ï´Ù. ±×°ÍÀº ÀüÀûÀ¸·Î ÄÚµåÀÇ Á¾·ù¿¡ ´Þ·Á ÀÖ½À´Ï´Ù.

profile feedbackÀ» ÅëÇØ ÀÌÀÍÀ» ¾òÀ» ¼ö ÀÖ´Â ÄÚµå´Â ¾öû³­ ¼öÀÇ Á¶°Ç¹®(if °°Àº) À» Æ÷ÇÔÇϰí Àְųª, ¿¹Ãø °¡´ÉÇÑ ÇൿÀ» ³»Æ÷ÇÏ´Â ÄÚµåµéÀÔ´Ï´Ù. ±×·¯³ª ±×·± ÇൿµéÀº ÄÄÆÄÀÏ·¯°¡ ¸íÈ®ÇÏ°Ô ¾ËÁö ¸øÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ ÄÚµåÀÇ °£´ÜÇÑ ¿¹·Î °ªÀ» üũÇÏ´Â °ÍÀ» µé ¼ö ÀÖ½À´Ï´Ù. ÄÄÆÄÀÏ·¯´Â ÇÁ·Î±×·¡¸Ó°¡ °ªÀÇ ¿Ç°í ±×¸§À» ¼öÇà½Ã ±×µéÀÌ ¾î¶² °ªÀ» ±â´ëÇÏ´ÂÁö ¾ËÁö ¸øÇϱ⠶§¹®¿¡ º¸Åë ¿Ç°í ±×¸§À» ¶È°°ÀÌ Ãë±ÞÇÕ´Ï´Ù. ¸¸¾à Å×½ºÆ®°¡ Á¤È®Çß´Ù¸é ÄÚµå ¾È¿¡ ÀÖ´Â °ªÀº °ÅÀÇ ¿ÇÀ» °ÍÀÔ´Ï´Ù. ±×·¯¸é profile feedbackÀº ÄÄÆÄÀÏ·¯°¡ À̰ÍÀ» ÀνÄÇÒ ¼ö ÀÖ°Ô ÇØÁÖ°í Äڵ带 ¿Ã¹Ù¸£°Ô ÃÖÀûÈ­ ÇÏ°Ô ÇØÁÝ´Ï´Ù.

profile feedbackÀ» ÀÌ¿ëÇÏ¿© ¼º´ÉÀ» °³¼±ÇÒ ¼ö ÀÖ´Â ¶Ç´Ù¸¥ ¿¹´Â ¾î¶² ·çƾµéÀ» ÀζóÀνÃÄѼ­ ºôµå ÇÒ °ÍÀÎÁö °áÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀζóÀο¡´Â µÎ°¡Áö ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ù¹øÂ°´Â ·çƾÀ» È£ÃâÇϴµ¥ µå´Â ºñ¿ëÀ» ÁÙÀÏ ¼ö ÀÖ°í µÎ¹øÂ°´Â Á»´õ ÃÖÀûÈ­ ÇÒ ¼ö ÀÖ´Â ¿©Áö¸¦ °¡Áú ¼ö ÀÖ°Ô µË´Ï´Ù. ÀζóÀο¡ ´ÜÁ¡Àº ÄÚµå »çÀÌÁ Å©°Ô ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù;µû¶ó¼­ ÀζóÀÎµÈ Äڵ尡 º°·Î À¯¿ëÇÏÁö ¾ÊÀº°ÍÀ¸·Î ÆÇ¸íµÈ´Ù¸é ÄÚµå »çÀÌÁ Å©°Ô ÇÒ »Ó¸¸ ¾Æ´Ï¶ó ¼º´ÉÀúÇϵµ ¹ß»ýÇÒ °ÍÀÔ´Ï´Ù. profile feedbackÀº ¿Ã¹Ù¸£°Ô ·çƾµéÀ» ÆÇ´ÜÇÏ¿© ÀÌ·¯ÇÑ ÀζóÀÎ ÀÛ¾÷À» °¡´ÉÇÏ°Ô ÇØÁÝ´Ï´Ù.


profile feedback ÄÄÆÄÀÏ·¯ Ç÷¡±×

Ç÷¡±×´Â ¾îÇø®ÄÉÀ̼ÇÀ» ºôµå Çϰí profileÀ» ¸ðÀ¸°í ¶Ç´Â ÇöÀç Á¸ÀçÇϰí ÀÖ´Â profileÀ» »ç¿ëÇÏ´Â °Í °°Àº ÀÏ·ÃÀÇ ÀÛ¾÷µéÀ» ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë·Á ÁÙ ¼ö ÀÖ½À´Ï´Ù. Ç÷¡±×ÀÇ »ç¿ëÀº Á» ´õ ¼³¸íÀÌ ÇÊ¿äÇÕ´Ï´Ù.

  • -xprofile=collect ´Â ¾îµð¿¡ profile Á¤º¸¸¦ µÑ°ÍÀÎÁö¿¡ ´ëÇÑ Ãß°¡ÀûÀÎ ÆÄ¶ó¹ÌÅͰ¡ ÇÊ¿äÇÕ´Ï´Ù. ¿¹¸¦ µé¾î:

    -xprofile=collect:myapp ´Â profile µ¥ÀÌŸ¸¦ myapp.profileÀ̶ó´Â µð·ºÅ丮¸¦ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ°í ÀÖ´Â µð·ºÅ丮¿¡ »ý¼ºÇÒ °ÍÀÔ´Ï´Ù. ºñ½ÁÇÏ°Ô -xprofile=collect:/tmp/myapp Ç÷¡±×´Â /tmp/myapp.profile µð·ºÅ丮¿¡ profile µ¥ÀÌŸ¸¦ ÀúÀåÇÒ °ÍÀÔ´Ï´Ù. ¸¸¾à Àå¼Ò¸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù¸é profileÀº <prog>.profile(<prog>´Â ÇöÀç ½ÇÇàµÇ°í ÀÖ´Â ÆÄÀÏÀÇ À̸§) µð·ºÅ丮¿¡ ÀúÀåµÉ °ÍÀÔ´Ï´Ù.

  • -xprofile=use ¶ÇÇÑ profile Á¤º¸¸¦ ¾îµð¿¡¼­ °¡Á®¿Ã°ÍÀÎÁö ´ëÇÑ ÆÄ¶ó¹ÌÅͰ¡ ÇÊ¿äÇÕ´Ï´Ù.

    -xprofile=use:/tmp/myapp ´Â profile data¸¦ /tmp/myapp.profile¿¡ ÀúÀåÇÒ °ÍÀÔ´Ï´Ù. ¸¸¾à Àå¼Ò°¡ ÁöÁ¤µÇÁö ¾Ê´Â´Ù¸é ÇöÀç µð·ºÅ丮¿¡¼­ a.out.profile¿¡¼­ µ¥ÀÌŸ¸¦ ãÀ» °ÍÀÔ´Ï´Ù. ¿©±â¼­ Áß¿äÇÑ °ÍÀº -xprofile=collect¿Í´Â ´Ù¸¥ µ¿ÀÛÀ» ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ´Ù¸¥ µ¿ÀÛÀ» ÇÏ´Â ÀÌÀ¯´Â profile ¼öÁý±â´Â ½ÇÇàÆÄÀÏÀÇ À̸§À» °áÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ÄÄÆÄÀÏ·¯°¡ profile µ¥ÀÌŸ¸¦ ÀÌ¿ëÇØ ¾îÇø®ÄÉÀ̼ÇÀ» ºôµåÇÒ ¶§´Â profileÀ» »ý¼ºÇÑ ¾îÇø®ÄÉÀ̼ÇÀÇ À̸§À» ¾Ë ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù.

    ÁÖÀÇ: profile data¸¦ ÀÌ¿ëÇØ ½ÇÇàÆÄÀÏÀ» »ý¼ºÇÒ¶§¿¡´Â ¾ðÁ¦³ª ¿ÏÀüÇÑ À§Ä¡¸¦ ÁöÁ¤ÇØÁÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.


  • profile feedbackÀ» ÀÌ¿ëÇÏ´Â ´Ù¸¥ ÄÄÆÄÀÏ·¯ Ç÷¡±×

    profile Á¤º¸¸¦ À§ÇØ -xprofile=collectÀ» ÀÌ¿ëÇÏ¿© ¾îÇø®ÄÉÀ̼ÇÀ» ÄÄÆÄÀÏÇÒ¶§¿¡, ¹ÙÀ̳ʸ®´Â ¸Å¿ì ³·Àº ¼öÁØÀÇ ÃÖÀûÈ­¸¦ °ÅÃļ­ »ý¼ºµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ÃÖÀûÈ­µÈ ¹ÙÀ̳ʸ®¸¦ ÀÌ¿ëÇØ µ¥ÀÌŸ¸¦ ¾ò´Â¤Ì°Í º¸´Ù Á»´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾Ë ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀÓ½ÃÀûÀÎ ¹ÙÀ̳ʸ®´Â ¼Ò½ºÄÚµå¿Í Ç÷¡±×¿¡ µû¶ó¼­ °¢°¢ ´Ù¸¥ ¼Ò½ºÄÚµå ·¹À̾ƿôÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ¸¸¾à Ç÷¡±×°¡ ¹Ù²ï´Ù¸é ÄÚµåÀÇ ·¹À̾ƿôµµ ¹Ù²ð °Í ÀÔ´Ï´Ù.

    ÁÖÀÇ: -xprofileÀ» »ç¿ëÇÒ¶§ ¿Ü¿¡µµ, Ä÷º¼Ç°ú »ç¿ë ÀýÂ÷¿¡¼­´Â °°Àº Ç÷¡±×¸¦ ÁöÁ¤Çϴ°ÍÀÌ °¡Àå ÁÁ½À´Ï´Ù.


    profile Á¤º¸ ¼öÁýÀ» À§ÇØ ¹ÙÀ̳ʸ®¸¦ ½ÇÇà

    ¹ÙÀ̳ʸ®°¡ ½ÇÇàµÇ¸é profile µ¥ÀÌŸ´Â ÆÄÀÏ ½Ã½ºÅÛ¿¡ ±â·Ï µË´Ï´Ù. ±â·ÏÀº ½ÇÇàÀÌ ¸ðµÎ ³¡³­ ÈÄ¿¡ ¼öÇà µË´Ï´Ù µû¶ó¼­ ¾îÇø®ÄÉÀ̼ÇÀÇ ¼öÇàÀÌ Á¤»óÀûÀ¸·Î µÇÁö ¾Ê´Â´Ù¸é profile µ¥ÀÌŸ´Â ±â·ÏµÇÁö ¾Ê½À´Ï´Ù. ¸¸¾à ¾îÇø®ÄÉÀ̼ÇÀÌ ¿©·¯¹ø ¼öÇàµÈ´Ù¸é profile µ¥ÀÌŸ´Â ¸ðµç ¼öÇà¿¡¼­ÀÇ Á¤º¸¸¦ ÃàÀûÇÏ°Ô µË´Ï´Ù.

    ¸¸¾à ¼Ò½ºÄڵ尡 ¼öÁ¤µÈ´Ù¸é ÀÌÀüÀÇ profile µ¥ÀÌŸ¸¦ »ç¿ëÇÏ´Â °ÍÀº ÁÁÀº »ý°¢ÀÌ ¾Æ´Õ´Ï´Ù. ÄÄÆÄÀÏ·¯°¡ ¾Æ¹«·± ¿¡·¯¸¦ ³»Áö´Â ¾Ê°ÚÁö¸¸ ÃÖÀûÈ­ °áÁ¤À» ¼öÇàÇϴµ¥¿¡´Â ¾Ç¿µÇâÀ» ÁÙ °ÍÀÔ´Ï´Ù.

    ÁÖÀÇ: -xprofile=collect¸¦ ÀÌ¿ëÇÏ¿© ºôµåÇÒ ¶§¿¡´Â ÀÌÀüÀÇ profile µ¥ÀÌŸ¸¦ Áö¿ì´Â °ÍÀÌ ÁÁ½À´Ï´Ù.


    profile feedback¿¡ ÀÇÇØ ¼öÁýµÈ Á¤º¸¸¦ ÄÄÆÄÀÏ·¯°¡ ÀÌ¿ëÇÏ´Â ¿É¼Ç

    profile feedback Á¤º¸¸¦ ÀÌ¿ë ÇÏ´Â ¸î°¡Áö ÄÄÆÄÀÏ·¯ ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù:

    • ÃÖÀûÈ­ level -xO5, profile feedbackÀº ÄÄÆÄÀÏ·¯°¡ ÀÚÁÖ »ç¿ëµÇ¾îÁö´Â ÄÚµåÀÇ Æ¯º°ÇÑ ¸í·ÉÀ» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð profile feedback ¾øÀ̵µ -xO5¸¦ ÅëÇØ °¡´ÉÇÏÁö¸¸ º°·Î È¿°úÀûÀÌÁö ¸øÇÕ´Ï´Ù.

    • ÄÄÆÄÀÏ·¯ Ç÷¡±× -xipo ¿Í-xcrossfile ´Â Å©·Î½ºÆÄÀÏ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù. Áï ¿©·¯ ¼Ò½º ÆÄÀÏÀ» °ÅÃļ­ ÃÖÀûÈ­°¡ ÀÌ·ç¾î Áý´Ï´Ù. ÇѰ¡Áö ¿¹·Î ÇÑ ¼Ò½º Äڵ忡¼­ÀÇ ÀζóÀÎ ÃÖÀûÈ­¸¦ ¼öÇàÇÏ°í ¶Ç ´Ù¸¥ ¼Ò½º ÆÄÀÏ¿¡¼­ ±×°ÍÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. profile feedbackÀÌ ÀÖ´Ù¸é ÄÄÆÄÀÏ·¯´Â ÀζóÀÎÀÌ ²À ÇÊ¿äÇÑ ·çƾµéÀ» ÈξÀ ´õ Àß Ã£À» ¼ö ÀÖ½À´Ï´Ù.

    • ÄÄÆÄÀÏ·¯ Ç÷¡±×-xlinkopt ´Â ¸µÅ©Å¸Àӽÿ¡ ÃÖÀûÈ­¸¦ °¡´ÉÇÏ°Ô ÇØÁÝ´Ï´Ù. Áï ÃÖÁ¾ÀûÀ¸·Î »ý¼ºµÈ ¸ðµç ÄÚµåµéÀ» ÀÌ¿ëÇÏ¿© ÄÚµå ·¹À̾ƿôÀÇ ÃÖÀûÈ­¸¦ ¼öÇàÇÕ´Ï´Ù. À̰ÍÀº ±Ô¸ð°¡ Å« ¼Ò½º Äڵ忡¼­ ÀÚÁÖ ¼öÇàµÇ´Â ÄÚµåµéÀ» Çѵ¥ ¸ð¾Æ³õ±â ¶§¹®¿¡ ¼º´ÉÇâ»óÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.


    • profile feedbackÀ» ÀÌ¿ëÇÑ ¿¹

      ¿¹Á¦ 2¹øÀÇ ÄÚµå´Â ÄÚµå ·¹À̾ƿôÀÇ Çâ»óÀ» ¾òÀ» ¼ö ÀÖ´Â ÁÁÀº ¿¹ÀÔ´Ï´Ù. Äڵ带 °Ë»çÇØº¸¸é ÇÔ¼ö f¸¦ ¼öÇàÇϴµ¥ ½Ã°£ÀÌ °É¸²À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â 6°¡Áö º¯¼ö¸¦ ´õÇÏ°Ô µË´Ï´Ù. ´õÇϱâÀü¿¡ °¢ Æ÷ÀÎÅ͵éÀÇ °ªµéÀÌ ¿Ã¹Ù¸¥Áö üũ¸¦ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î ¸ðµç °ªÀÌ À¯È¿ÇÏ´Ù¸é ¼Ò½º ÄÚµåÀÇ ³ª¸ÓÁö ºÎºÐ¿¡¼­ÀÇ ¸ðµç Å×½ºÆ®µµ À¯È¿ÇÒ °ÍÀÔ´Ï´Ù. ±×·¸±â ¶§¹®¿¡ ¾Æ·¡ÀÇ µÎ°³ÀÇ if¹®Àº ¸ðµÎ À¯È¿ÇÏ´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù.

      #include <stdio.h>
      #include <stdlib.h>

      static unsigned f( unsigned *a0, unsigned *a1, unsigned *a2,
      unsigned *a3, unsigned *a4, unsigned *a5)
      {
      unsigned result = 0;
      if (a0 == NULL) {printf("a0 == NULL");} else {result += (*a0);}
      if (a1 == NULL) {printf("a1 == NULL");} else {result += (*a1);}
      if (a2 == NULL) {printf("a2 == NULL");} else {result += (*a2);}
      if (a3 == NULL) {printf("a3 == NULL");} else {result += (*a3);}
      if (a4 == NULL) {printf("a4 == NULL");} else {result += (*a4);}
      if (a5 == NULL) {printf("a5 == NULL");} else {result += (*a5);}
      return result;
      }

      void main(int argc,const char *argv[])
      {
      int i, j, niters = 1, n=6;
      unsigned sum, answer = 0, a[6];

      niters = 1000000000;
      if (argc == 2) { initers = atoi(argv[1]); }

      for(j=0; j<n; j++)
      {
      a[j] = rand();
      answer += a[j];
      }

      for(i=0; i<niters; i++) { sum=f(a+0, a+1, a+2, a+3, a+4, a+5); }

      if (sum == answer) { printf("answer = %u\n", answer); }
      else { printf("error sum=%u, answer=%u", sum, answer); }
      }

      ¿¹Á¦ 2 - profile feedbackÀ» ÀÌ¿ëÇØ ÆÛÆ÷¸Õ½º Çâ»óÀ» ¾ò´Â ¿¹

      ¿¹Á¦ 3¹øÀº profile feedbackÀ» »ç¿ëÇÏÁö ¾Ê¾ÒÀ»¶§ÀÇ °á°ú¸¦ º¸¿©ÁÝ´Ï´Ù.

      $ cc -O -o example example.c
      $ timex example 1000000000
      answer = 86902

      real 43.87
      user 43.28
      sys 0.00

      ¿¹Á¦ 3 - profile feedbackÀ» ÀÌ¿ëÇÏÁö ¾Ê°í ÄÄÆÄÀÏ ÇÏ¿© ½ÇÇàÇßÀ»¶§

      ¿¹Á¦ 4´Â profile feedbackÀ» ÀÌ¿ëÇÏ¿© ÄÄÆÄÀÏÀ» ÇÏ´Â ¿¹¸¦ º¸¿© ÁÝ´Ï´Ù.

      $ cc -O -xprofile=collect:./example -o example example.c
      $ example 100
      answer = 86902

      $ cc -O -xprofile=use:./example -o example example.c
      $ timex example 1000000000
      answer = 86902

      real 34.52
      user 33.93
      sys 0.01

      ¿¹Á¦ 4 - profile feedbackÀ» ÀÌ¿ëÇÏ¿© ÄÄÆÄÀÏ ÇÏ°í ½ÇÇàÇßÀ»¶§

      µÎ ÄÚµå´Â ¾à 10ÃÊÀÇ Â÷À̸¦ º¸¿©¼­ ´ë·« 25% Á¤µµÀÇ ¼º´ÉÇâ»óÀ» °¡Á® ¿ÔÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ÀÌ ¿¹Á¦´Â ´Ü¼øÈ÷ profile feedbackÀÇ ÃÖÀûÈ­¸¦ º¸¿©ÁÖ±â À§ÇÑ °ÍÀÌÁö¸¸ ÀÌ·¯ÇÑ ÃÖÀûÈ­ÀÇ È¿°ú´Â ´ëºÎºÐÀÇ Äڵ忡¼­ ³ªÅ¸³³´Ï´Ù.


      ÀúÀÚ ¼Ò°³
      Darryl Gove ´Â ½ã¸¶ÀÌÅ©·Î ½Ã½ºÅÛÁî Compiler Performance Engineering ºÎ¼­ÀÇ ¼ö¼® ¿£Áö´Ï¾îÀÔ´Ï´Ù. ÁÖ·Î UltraSPARC ½Ã½ºÅÛ¿¡¼­ÀÇ ¾îÇø®ÄÉÀÌ¼Ç ¼º´É Çâ»ó°ú ºÐ¼®¿¡ ´ëÇØ ¿¬±¸Çϰí ÀÖ½À´Ï´Ù. DarrylÀº ¿µ±¹ÀÇ University of Southampton¿¡¼­ ¹Ú»çÇÐÀ§¸¦ °¡Áö°í ÀÖ°í Sun ¿¡ ÀÔ»çÇϱâ Àü¿¡´Â ¿µ±¹¿¡¼­ ´Ù¾çÇÑ °³¹ßÀÛ¾÷À» ¼öÇàÇß½À´Ï´Ù.
      Chris Aoki ´Â ½ã¸¶ÀÌÅ©·Î ½Ã½ºÅÛÁîÀÇ SPARC ÄÄÆÄÀÏ·¯ÆÀÀÇ ¿£Áö´Ï¾îÀÔ´Ï´Ù. ÁÖ·Î ¼öÇàÇÏ´Â ÇÁ·ÎÁ§Æ®´Â feedback ±â¹ÝÀÇ ÃÖÀûÈ­¸¦ ¼öÇàÇÏ´Â °Í¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù.

      (2005³â 9¿ù 7ÀÏÀÚ ¾÷µ¥ÀÌÆ®)