수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1621002
  • Today | 382
  • Yesterday | 482

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 ... 480 481 482 483 484 485 486 487 488 ... 2998  Next»

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

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
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 (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
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

  • Preprocessor
  • IIS 7.0
  • 스카치블루
  • 엠파스
  • 돌체 노벨라
  • Sp_OA
  • MP3 플레이어
  • DDL
  • ADO.NET
  • awk
  • 에러
  • VBScript
  • 최적화
  • 발렌타인
  • JavaFX
  • 인라인 값
  • 영어속독
  • IPTV
  • CSS
  • UTMP

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
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          

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
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: 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.