|
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ÀÇ Ã³¸® ¼ø¼´Â:
- ¹ÙÀ̳ʸ®´Â -xprofile=collect Ç÷¡±×¸¦ ÀÌ¿ëÇÏ¿© ºôµåÇÕ´Ï´Ù. ÀÌ Ç÷¡±×´Â ½ºÆä¼ÈÇÑ ¹öÀüÀÇ
¾îÇø®ÄÉÀ̼ÇÀ» »ý¼ºÇÏ°í ½ÇÇàÁß¿¡ ¹ß»ýÇÑ µ¥ÀÌŸ¸¦ ¼öÁýÇÕ´Ï´Ù.
- ±×¶§ ¾îÇø®ÄÉÀ̼ÇÀº 'training' workload¿Í ÇÔ²² ½ÇÇàµË´Ï´Ù. 'training' workload´Â ¾îÇø®ÄÉÀ̼ÇÀÌ
½ÇÁ¦·Î ¼öÇàÇØ¾ßÇÒ ´ëÇ¥ÀûÀÎ ÀÛ¾÷ÀÌÁö¸¸ ½Ã°£ÀÌ ÁøÂ¥ workload¸¸Å ¿À·¡ °É¸®Áö ¾Ê´Â ÀÛ¾÷ÀÔ´Ï´Ù.
- ¹ÙÀ̳ʸ®¸¦ -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ÀÏÀÚ ¾÷µ¥ÀÌÆ®)
|