수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1695052
  • Today | 797
  • Yesterday | 606

Programming/Development2007/03/29 12:40

프로그램의 시간(성능)측정

출처 : http://hongyver.pe.kr/ttblog/category/프로그래밍디버깅

C 표준함수 clock() 을 이용

#include <stdio.h>
#include <time.h>


void main()
{
     clock_t t1,t2;
     int count=0;

     t1=clock();
     for (;;) {
          printf("기다리십시오. %d\n",count++);
          t2=clock();
          if (t2-t1 > 3*CLOCKS_PER_SEC) {
              break;
          }
     }
     printf("끝났습니다.\n");
}



Windows Mutimedia timer 의 timeGetTime() 함수 이용

DWORD dwStartTime = timeGetTime();
// 중간코드생략
DWORD dwEndTime = timeGetTime();
printf("%d ms", dwEndTime-dwStartTime);



Windows Management 의
QueryPerformanceFrequency/QueryPerformanceCounter() 함수이용


#define CHECK_TIME_START  __int64 freq, start, end; if (QueryPerformanceFrequency((_LARGE_INTEGER*)&freq))  {QueryPerformanceCounter((_LARGE_INTEGER*)&start);

#define CHECK_TIME_END(a,b) QueryPerformanceCounter((_LARGE_INTEGER*)&end);  a=(float)((double)(end - start)/freq*1000); b=TRUE;                        } else b=FALSE;

...

CHECK_TIME_START;
// 중간코드 생략
CHECK_TIME_END(Time, err);

printf("printf() 걸린 시간은.. %8.6f미리세컨입니다.",Time);


VC++6 의 Profile 사용
Project Setting 에서 Link 의 Enable profiling을 체크

사용자 삽입 이미지


Build의 Profile 선택

사용자 삽입 이미지


Profile 대화상자에서 원하는 Profile Type 선택 - 시간측정은 Function timing
Function converage와 Line Coverage 의 분석을 통해 함수의 점유율을 알수 있다.
점유율에 대한 이해는 아래 링크를...
http://www.debuglab.com/knowledge/coverage.html

사용자 삽입 이미지


그러면 아래와 같은 profile 탭에 결과가 나온다.

사용자 삽입 이미지



VS.NET 의 Profile 사용(PGO)

프로젝트 속성에서 C/C++ 탭에서 프로그램 데이타 베이스를 /Zi 이하로 설정
/ZI 일경우 /GL 옵션과 충돌

사용자 삽입 이미지


최적화 옵션에서 최적화를 /O[x] 중 원하는 것 선택
전체 프로그램 최적화에서 /GL 옵션 선택


사용자 삽입 이미지


코드생성 탭에서 기본 런타임 검사를 기본값으로 설정

사용자 삽입 이미지

링커탭에서 일반에 보면 증분링크 사용 안함(/INCREMENTAL:NO)

사용자 삽입 이미지


그러면 설정은 다 끝났다.
이제 빌드를 해야하는데 PGO를 위한 빌드는 빌드창에 프로필 기반 최적화라는 항목이 보인다.
이 항목중에 계측, 업데이트, 최적화, 계측된/최적화된 응용 프로그램 실행 이 있는데 이중 먼저 계측을 선택하여 PGD 파일을 생성한다.
다음 계측된/최적화된 응용 프로그램 실행을 눌러 실제 프로그램을 테스트/연습을 수행한다.
원하는 만큼 수행하여도 된다 이때 수행한 만큼 PGC 파일이 생성된다.
다음 최적화를 눌러 생성된 PGC 파일을 통해 최종 PGD 파일이 생성된다.


사용자 삽입 이미지


최종적으로 pgomrg.exe test.pgd /summary 를 실행해보면 요약된 정보를 얻을수 있다.
도스커맨드 창은 도구에 VisualStudio 2005 command Prompt를 이용하면 별도로 경로명을 지정하지 않아도 편리하게 이용할수 있다.

사용자 삽입 이미지



@CLK
이 방법은 디버깅시 Watch 창에 @CLK 를 입력하여 측정하는 방법이다.
간단하지만 요긴하게 써먹을수 있다.
아래 그림처럼 측정하고자 하는 구간의 첫번째 브레이크 포인터에
@CLK/1000,d 를 하면 초단위로 값을 볼수 있다.
그리고 마지막 브레이크 포인터에 @CLK=0 을 입력한다.
아래 그림을 보면 for문 수행하는 시간이 대략 548초 걸렸다.
디버깅 모드이므로 참고 정도로만 사용할것.

사용자 삽입 이미지


"Development" 카테고리의 다른 글
  • 선택이 아닌 필수 AOP(Aspect Oriented Programming) (0)2007/04/20
  • 개발 생산성 향상을 위한 조언 (0)2007/04/20
  • 프로그램의 시간(성능)측정 (0)2007/03/29
  • Thread 생성시 어떤 API를 사용해야 하는가? (0)2007/03/15
  • PVOID, 템플릿이란? (0)2006/12/27
2007/03/29 12:40 2007/03/29 12:40
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2758

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 491 492 493 494 495 496 497 498 499 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • BEA
  • iostream
  • 시스템
  • GIF
  • Merge-Join
  • 아이콘
  • 파일 시스템
  • Handing
  • 서암관
  • 기억력
  • 디스크 포멧
  • 콘텐츠
  • NULL 처리
  • 철학
  • KT
  • Management
  • 회사
  • 노천극장
  • 시바스
  • Secure

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 경청... 너무나 중요한데.......
    webdizen 14:59
  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Polarux - Linuxing
      • Rodman®
      • 까만 나비
      • 나를 가꾸는 시간.
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.