°¡. ÃÖÀûÈ­ Áغñ

»ç¿ë °¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ¾çÀÌ ÀÌ·ÐÀûÀ¸·Î ¹«ÇÑ´ë°¡ µÇ¾úÀ¸¸ç ½ÇÁúÀûÀ¸·Îµµ ¼ö½Ê MB Á¤µµÀÇ ÅؽºÆ®´Â °Å¶áÈ÷ ºÒ·¯ ¿Ã ¼ö ÀÖ°Ô µÇ¾ú´Ù. ÀÌ·¸°Ô µÇ¸é ÀÛÀº ÆÄÀÏÀ» ÆíÁýÇÒ ¶§´Â Àß ´À³¢Áö ¸øÇß´ø ¼ÓµµÀÇ ÀúÇϸ¦ ´Ù½Ã °æÇèÇÒ ¼ö ÀÖ°Ô µÇ´Âµ¥ ÀÌ ÁîÀ½¿¡¼­ Áß°£ ÃÖÀûÈ­°¡ ÇÊ¿äÇÏ´Ù. À̹ø ÃÖÀûÈ­´Â ÁÖ·Î Å« ÆÄÀÏÀ» ÆíÁýÇÒ ¶§ÀÇ ½Ã°£À» ´ÜÃà½ÃÅ°´Â µ¥ ÁßÁ¡À» µÎ´Âµ¥ ÈξÀ ´õ Á¤±³ÇÏ°í º¹ÀâÇÏÁö¸¸ ´çÀå ´«¿¡ ¶é ¸¸ÇÑ Å« È¿°ú´Â ±â´ëÇϱ⠾î·Æ´Ù.

1Â÷ ÃÖÀûÈ­ ¶§´Â ¼öõ ¹èÀÇ ¼Óµµ Çâ»ó È¿°ú°¡ ÀÖ¾úÁö¸¸ Áß°£ ÃÖÀûÈ­´Â ±â²¯ÇØ¾ß 2¹è ³»Áö´Â 10¹è Á¤µµÀÇ ¼Óµµ Çâ»ó È¿°ú°¡ ÀÖÀ» °ÍÀÌ´Ù. ±×·¡µµ 2¹è¸¸ »¡¶óÁ®µµ ¾ó¸¶³ª ´ÙÇàÀΰ¡? ¸¶Áö¸· ÃÖÀûÈ­ ¶§´Â ºÒ°ú ¸î % Çâ»óÀ» À§ÇØ Äڵ带 °íÃÄ¾ß Çϴµ¥ Áß°£ ÃÖÀûÈ­´Â ±×·¡µµ ±×¿¡ ºñÇÑ´Ù¸é È¿°ú°¡ ¸¹Àº ¼ÀÀÌ´Ù. ±Ùº»ÀûÀ¸·Î ±¸Á¶¸¦ ¶â¾î °íÄ¡Áö´Â ¾ÊÀ¸¸ç ºÒÇÊ¿äÇÑ µ¿ÀÛÀ» »ý·«ÇÔÀ¸·Î½á ½Ã°£À» ´ÜÃà½ÃÅ°´Â ¹æ¹ýÀ» ¸¹ÀÌ »ç¿ëÇÏ°Ô µÉ °ÍÀÌ´Ù.

Áß°£ ÃÖÀûÈ­¸¦ Çϱâ Àü¿¡ ¸î °¡Áö ÀÛ¾÷ Áغñ¸¦ Çϵµ·Ï ÇÏÀÚ. Å« ÆÄÀÏÀ» ÆíÁýÇÒ ¶§ ¾î¶² Á¡ÀÌ ¹®Á¦°¡ µÇ°í ¾îµð°¡ ¹®Á¦°¡ µÇ´ÂÁö¸¦ Á¶»çÇØ¾ß ÃÖÀûÈ­ ´ë»óÀ» Á¦´ë·Î ¹°»öÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¼º´É Á¡°ËÀ» À§ÇÑ °£´ÜÇÑ Áغñ¸¦ Çصΰí ÀÛ¾÷À» ½ÃÀÛÇÑ´Ù. ¸ÕÀú ´ÙÀ½ ¼Óµµ ÃøÁ¤ ¸ÅÅ©·Î¸¦ ¼Ò½ºÀÇ ¼±µÎ¿¡ ºÙ¿©³Ö´Â´Ù.

 

#define STARTQ TCHAR qMes[256];\

     static qcount=0;\

     LARGE_INTEGER qs,s1,s2,s3,qe,qfreq;\

     double g1,g2,g3,ge;\

     QueryPerformanceFrequency(&qfreq);\

     QueryPerformanceCounter(&qs);\

     s1=s2=s3=qs;

#define SPOT1 QueryPerformanceCounter(&s1);

#define SPOT2 QueryPerformanceCounter(&s2);

#define SPOT3 QueryPerformanceCounter(&s3);

#define ENDQ QueryPerformanceCounter(&qe);\

     g1=((double)(s1.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

     g2=((double)(s2.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

     g3=((double)(s3.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

     ge=((double)(qe.QuadPart-qs.QuadPart))/((double)qfreq.QuadPart);\

     sprintf(qMes, "%04d : S1=%.6f,S2=%.6f,S3=%.6f,QE=%.6f\r\n",++qcount,g1,g2,g3,ge);\

     OutputDebugString(qMes);

 

³»¿ëÀ» º¸¸é ¾Ë°ÚÁö¸¸ ÀÌ ¸ÅÅ©·Î´Â ƯÁ¤ ÁöÁ¡ÀÇ ½ÇÇà ½Ã°£À» ÃøÁ¤ÇÏ¿© µð¹ö±ë Á¤º¸·Î Ãâ·ÂÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. µð¹ö±ë Á¤º¸´Â ÄÄÆÄÀÏ·¯ÀÇ Ãâ·Ââ(Output)¿¡ ¹®ÀÚ¿­·Î ³ªÅ¸³­´Ù. ½Ã°£À» ÃøÁ¤ÇÏ°í ½ÍÀº °÷ÀÇ ¼±µÎ¿¡ STARTQ ¸ÅÅ©·Î¸¦ »ðÀÔÇÏ°í ÀÛ¾÷ ¿Ï·á ½ÃÁ¡¿¡ ENDQ ¸ÅÅ©·Î¸¦ »ðÀÔÇÏ¸é µÎ ÁöÁ¡°£ÀÇ °æ°ú ½Ã°£ÀÌ µð¹ö±ë Á¤º¸·Î Ãâ·ÂµÈ´Ù. Áß°£¿¡ ½Ã°£ Á¡°Ë ÁöÁ¡À» ¼¼ ±ºµ¥ ´õ µÑ ¼ö ÀÖÀ¸¹Ç·Î ÃÖ´ë 4±ºµ¥ÀÇ ½Ã°£À» ÃøÁ¤ÇÒ ¼ö ÀÖ´Ù. »ç¿ë ¿¹¸¦ º¸ÀÌ¸é ´ÙÀ½°ú °°´Ù.

 

STARTQ

ÇÔ¼ö1È£Ãâ

SPOT1

ÇÔ¼ö2È£Ãâ

SPOT2

¿¬»ê½Ä

ENDQ

 

ÀÌ ¸ÅÅ©·Î¿¡ ÀÇÇØ ÇÔ¼ö1 È£Ãâ ÈÄÀÇ °æ°ú ½Ã°£°ú ÇÔ¼ö 2 È£Ãâ ÈÄÀÇ °æ°ú ½Ã°£, ¿¬»ê½Ä ½ÇÇà ÈÄÀÇ °æ°ú½Ã°£À» Á¶»çÇÒ ¼ö ÀÖ´Ù. ÀüüÀûÀ¸·Î 0.033ÃÊ°¡ °É·È°í SPOT1ÀÇ °æ°ú ½Ã°£ÀÌ 0.0002ÃÊ °É·È°í SPOT2ÀÇ °æ°ú ½Ã°£ÀÌ 0.032ÃÊ°¡ °É·È´Ù¸é ÇÔ¼ö2°¡ ½Ã°£À» ¸¹ÀÌ Àâ¾Æ ¸Ô°í ÀÖ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ°Ô µÈ´Ù. Áï, ÀÌ ÇÔ¼ö°¡ ¼Óµµ ÀúÇÏÀÇ ÁÖ¹üÀ̸ç ÃÖÀûÈ­ ´ë»óÀÌ µÈ´Ù.

ÀÌ ¸ÅÅ©·Î´Â ÀçÈ°¿ëÀÌ ½±µµ·Ï ÀÛ¼ºÇÏ¿´À¸¹Ç·Î ¼Ò½º ¼±µÎ¿¡ ´ëÃæ º¹»çÇØ ³Ö°í ½Ã°£ ÃøÁ¤¿ëÀ¸·Î ¾Ö¿ëÇÒ¸¸ÇÏ´Ù. ÇÔ¼ö2°¡ ´À¸®´Ù´Â °ÍÀ» È®ÀÎÇßÀ¸¸é ´Ù½Ã ÇÔ¼ö2¿¡ ¸ÅÅ©·ÎµéÀ» Áß°£Áß°£ »ðÀÔÇØ ³Ö°í ÇÔ¼ö2ÀÇ ¾î¶² ºÎºÐÀÌ ´À¸°Áö¸¦ Á¤¹ÐÇÏ°Ô Å×½ºÆ®ÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ½ÄÀ¸·Î ¹üÀ§¸¦ Á¼Çô ³ª°¡´Ù º¸¸é ÃÖÀûÈ­ ´ë»óÀ» ½±°Ô ãÀ» ¼ö ÀÖ´Ù.

´ÙÀ½Àº ¾ÆÁÖ Å« ÅؽºÆ® ÆÄÀÏÀ» ÁغñÇϵµ·Ï ÇÏÀÚ. Á÷Á¢ ÅؽºÆ® ÆÄÀÏÀ» ¸¸µé¾îµµ µÇ°í ¾Æ´Ï¸é CD-ROM¿¡ ÀÖ´Â oop-long.txt ÆÄÀÏÀ» ´ë½Å »ç¿ëÇصµ µÈ´Ù. ÀÌ ÆÄÀÏÀº °°Àº ³»¿ëÀ» ¿©·¯ ¹ø º¹»çÇÔÀ¸·Î½á ¹«·Á 5MBÀÇ Å©±â¸¦ °¡Áö°í ÀÖÀ¸¸ç ÃÑ ÁÙ ¼ö´Â 96000ÁÙ¿¡ ´ÞÇÑ´Ù. ÀÌ Á¤µµ ±æÀÌÀÇ ¹®¼­¸¦ º° ¼Óµµ ÀúÇϾøÀÌ ÆíÁýÇÒ ¼ö ÀÖ´Ù¸é ÅؽºÆ® ÆíÁý±â·Î¼­ ±âº» ±â´ÉÀº °®Ãß¾ú´Ù°í ÇÒ ¼ö ÀÖ´Ù.

ApiEdit´Â ¾ÆÁ÷ ÆÄÀÏÀ» ÀÔÃâ·ÂÇÏ´Â Äڵ带 °¡Áö°í ÀÖÁö ¾ÊÀ¸¹Ç·Î ÀÓ½ÃÀûÀ¸·Î ÀÌ ÆÄÀÏÀ» Àоî¿Ã ¼ö ÀÖ´Â ±â´ÉÀ» ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ. »ç¿ëÇÏÁö ¾Ê´Â Å°ÀÎ VK_F8¿¡ ÀÌ ÆÄÀÏÀ» ºÒ·¯¿Í ¹öÆÛ¿¡ ³Ö¾îÁÖ´Â Àӽà Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

void OnKey(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)

{

     ....

     case VK_F8:

          HANDLE hFile;

          DWORD dwRead, dwSize;

          TCHAR *TextBuf;

          hFile=CreateFile("oop-long.txt",GENERIC_READ,0,NULL,

              OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

          if (hFile!=INVALID_HANDLE_VALUE) {

              dwSize=GetFileSize(hFile,NULL);

              TextBuf=(TCHAR *)malloc(dwSize+1);

              ReadFile(hFile,TextBuf,dwSize,&dwRead,NULL);

              TextBuf[dwRead]=0;

              CloseHandle(hFile);

              off=0;

              PrevX=0;

              bLineEnd=FALSE;

              xMax=1024;

              xPos=0;

              yPos=0;

              SelStart=SelEnd=0;

              ClearBookmark();

 

              lstrcpy(buf,"");

              Insert(0,TextBuf);

              free(TextBuf);

 

              SetCaret();

              Invalidate(-1);

          }

          return;

 

ÆÄÀÏÀ» ÀÐÀº ÈÄ Insert ÇÔ¼ö·Î ¹öÆÛ¿¡ »ðÀÔÇߴµ¥ »ðÀÔ ½ÃÁ¡¿¡¼­ Á¤·Ä°ú ½ºÅ©·Ñ Á¤º¸ °»½ÅÀ» ÇÒ °ÍÀÌ´Ù. oop-long.txt´Â ÇÁ·ÎÁ§Æ® Æú´õ¿¡ ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÇÏ°í ÀÖÀ¸¹Ç·Î º¹»ç¸¦ Çسõ´ø°¡ ¾Æ´Ï¸é ÀûÀýÇÑ Àý´ë°æ·Î¿¡ º¹»çÇسõ°í ÄÚµåÀÇ °æ·Î¸¦ °íÃÄ ÁÖµµ·Ï ÇÏÀÚ. ½ÇÇàÁß¿¡ F8À» ´©¸£¸é oop-long.txt ÆÄÀÏÀ» Àоî¿Ã °ÍÀÌ´Ù. ÄÄÆÄÀÏÇÑ ÈÄ ½ÇÇàÇغ¸°í ÀÌ Á¤µµ Å©±â¸é ¾î´À Á¤µµÀÇ ¼Óµµ°¡ ³ª´ÂÁö Å×½ºÆ®Çغ¸µµ·Ï ÇÏÀÚ.

F8À» ´­·¶À» ¶§ ÆÄÀÏÀ» Àоî¿À´Â ¼Óµµ´Â ¾ÆÁÖ ºü¸£´Ù. ¿äÁò Çϵåµð½ºÅ© ¼º´ÉÀÌ ³Ê¹« ÁÁ¾Æ¼­ 5MB Á¤µµ¸é 0.5Ãʸ¸¿¡ ´Ù ÀÐÀ» ¼ö ÀÖ´Â Á¤µµ´Ù. ±×·¯³ª Àоî¿Â Á÷ÈÄ¿¡ Á¤·ÄÀ» óÀ½ºÎÅÍ ³¡±îÁö ÇØ¾ß ÇϹǷΠȭ¸é¿¡ ÆÄÀÏ ³»¿ëÀÌ Ãâ·ÂµÇ´Â µ¥´Â ¾à°£ÀÇ ½Ã°£ÀÌ ÇÊ¿äÇÏ´Ù. 96000ÁÙÀ» ÁË´Ù ½ºÄµÇϸ鼭 ÁÙÀÇ Ã³À½°ú ³¡À» ã¾Æ³»¾ß ÇϹǷΠ´À¸° °Ô ´ç¿¬ÇÏ´Ù. ÀÚµ¿°³ÇàÀ» ÇÏÁö ¾Êµµ·Ï F9¸¦ ´­·¯ ¿É¼ÇÀ» Á¶Á¤Çϸé Á¤·Ä ¼Óµµ´Â ±²ÀåÈ÷ »¡¶óÁø´Ù.

´ÙÀ½Àº ¾Æ·¡À§·Î À̵¿Çغ¸°í ½ºÅ©·Ñµµ Çغ¸°í ¸¶¿ì½º·Î ±Ü¾î¼­ ¼±Åõµ Çغ¸ÀÚ. Å« ÆÄÀÏÀε¥µµ ´À¸®Áö ¾Ê°í ±²ÀåÈ÷ ºü¸£°Ô µ¿ÀÛÇÑ´Ù. ÇÏÁö¸¸ ¹®¼­ óÀ½¿¡´Â ¼Óµµ°¡ Á¦´ë·Î ³ªÁö¸¸ µÚÂÊÀ¸·Î °¥ ¼ö·Ï ´À·ÁÁ® ¹®¼­ ³¡ ºÎºÐ¿¡¼­´Â »ç¶÷ÀÇ µ¿ÀÛÀ» Á¦´ë·Î µû¶ó¿ÀÁö ¸øÇÑ´Ù. ¿Ö³ÄÇϸé ÁÙ¹øÈ£¸¦ ã´Â ÇÔ¼ö°¡ ¼øÂ÷ °Ë»öÀ» Çϱ⠶§¹®¿¡ µÞºÎºÐÀ¸·Î °¥ ¼ö·Ï ºñ±³Çغ¸´Â Ƚ¼ö°¡ Áõ°¡Çϱ⠶§¹®ÀÌ´Ù.

À̹ø¿¡´Â ¹®ÀÚ¸¦ ÀÔ·ÂÇغ¸ÀÚ. ±ÛÀÚ Çϳª¸¦ ÀÔ·ÂÇϴµ¥ °ÅÀÇ 3ÃÊ °¡·® °É¸®¸ç ÇѱÛÀÇ °æ¿ì ÇÑ ±ÛÀÚ ÀÔ·ÂÇϴµ¥ 10ÃÊ Á¤µµ°¡ °É¸°´Ù. »ç¶÷¼ÕÀ» ¸ø µû¶ó¿Ã »Ó¸¸ ¾Æ´Ï¶ó ±â´Ù¸®±âµµ °©°©ÇÒ Á¤µµ·Î ´À·Á °ÅÀÇ ¸ø¾µ Áö°æÀÌ´Ù. ÀÔ·Â ¼Óµµ¿¡ À־´Â ¹º°¡ Ư´ÜÀÇ ´ëÃ¥À» ¸¶·ÃÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» °Í °°´Ù. ÃÖ¾ÇÀÇ °æ¿ì´Â À©µµ¿ìÀÇ Å©±â¸¦ º¯°æÇÒ ¶§Àε¥ À̶§´Â Á¤·ÄÀ» óÀ½ºÎÅÍ ³¡±îÁö ´Ù½Ã Çϱ⠶§¹®¿¡ ¾ÆÁÖ ½ÉÇÏ°Ô ´À·ÁÁø´Ù.

ÆíÁýÆÄÀÏÀÌ Ä¿Áö¸é ´À·ÁÁø´Ù´Â °ÍÀ» ´«À¸·Î Á÷Á¢ È®ÀÎÇØ ºÃÀ¸´Ï ¾î¶² ºÎºÐÀÌ ¿Ö ´À¸°Áö Á¶»çÇغ¸°í ¼Óµµ¸¦ °³¼±Çغ¸µµ·Ï ÇÏÀÚ. ÀÌ ÃÖÀûÈ­°¡ ³¡³ª¸é 5MB Á¤µµÀÇ ÆÄÀϵµ ¹«¸®¾øÀÌ ´Ù·ê ¼ö ÀÖ´Â ÆíÁý±â°¡ µÇ¾î ÀÖÀ» °ÍÀÌ´Ù.