태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

 

 

 

 
블로그 검색:
분류 전체.. (270)
나의 관심사 (167)
connec2u.com (66)
기술 분석/.. (34)
Microsoft  Android  Google  Qualcomm  개발자 인생  Safari  NFC  iBeacon  IOT  안드로이드 
 Content manag..
└>mindwing
 Nouveautés
└>mindwing
 Marque
└>mindwing
 Découvrez le..
└>mindwing
 Par date de d..
└>mindwing
«   2018/08   »
      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  
+ Total : 306,343
+ Today : 41
+ Yesterday : 50
  

 

 

 

IAC _해당되는 글 1건
2008.03.10   Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Eclipse Java Project) 
Google 의 재반격: Google Wallet

Google 처럼 시장을 맘대로 주무르면서 편하게 사업하는 기업도 없다는 없는 것 같지만, 사실 알고보면 Google 도 많은 실패를 겪었던 전력이 있습니다. 대표적으로 Google Wallet 을 들 수 있는데요. Googl..

iTunes Pass, 애플의 새로운 결제모델 실험일지도...

2일전, 애플은 iTunes Pass 라는 Apple Store 에 한해 사용할 수 있는 선불형 지불시스템을 발표했습니다. 그리고, 오늘은 미국과 호주에서도 사용할 수 있도록 적용국가를 늘렸다고 발표했습니다. iTunes Pa..

Thread Group 설립, Nest 와 ARM 과 삼성의 전략적 동거

Microsoft 와 삼성이 Intel 주도의 OIC 에 참여한다는 뉴스가 나온지 얼마 되지 않아서, 이번에는 Nest 가 주도하는 Thread Group 에 ARM 과 삼성이 참여한다는 뉴스가 나왔습니다. Nest 는 Goo..

NFC 와 Bluetooth 의 신경전

NFC 와 Bluetooth 의 승부는 아직 전운이 감도는 하지만, 본격적인 전투는 벌어지지 않은 전장과도 같습니다. 대체적인 평가로는 POS 같이 물리적인 접촉행위가 소비자에게 안심을 주거나 비교적 자유롭게 통행해도 괜찮은 ..

OIC, AllJoyn 의 대항세력 등장

Open Interconnect Consortium, 줄여서 OIC 라는 단체가 출범했습니다. 이 단체는 이름만 들어도 쟁쟁한 회사들이 모여서 설립되었는데요. Intel, Dell, Samsung, Atmel, Broadcom..

WiGig, Connected home 에서 네트워크의 중요성

IoT 는 기본적으로 사물들이 인터넷에 직접 혹은 간접적으로 자유롭게 연결될 수 있어야 한다는 중요한 전제가 있습니다. 기업시장에서는 BYOD 와 각종 센서들까지 접속을 필요로 하는 기기들이 엄청나게 많아질 것이므로, 접속속도..

 

Eclipse 3.3.2 과 TPTP 4.4.1 을 이용한 Profiling (Eclipse Java Project)
+   [기술 분석/동향/Profiling]   |  2008.03.10 16:00  

문서의 목적

Eclipse 3.3.2 와 TPTP 4.4.1 의 Integrated Agent Controller 를 이용해서 Eclipse 에서 만든 Java Application 을 Profiling 하는 방법을 알아본다.


TPTP 4.4.1 소개

TPTP 는 Test and Performance Tools Platform 의 약자로, Eclipse 에서 프로그래밍 언어에 상관없이 Test 와 Profiling 을 할 수 있는 기반을 만들어주는 Eclipse 의 프로젝트이다.

TPTP 는 최근 버전에서 Integrated Agent Controller 기능을 탑재하면서 Eclipse 에서 만든 자체 프로젝트의 경우 별도의 조작없이 프로그램 실행과 동시에 Profiling 을 수행할 수 있게 되었다.

TPTP 4.4.1 의 Profiling 기능은 다음과 같은 3가지 모드의 Profiler 로 나뉘며, 각 모드는 한 번의 Profiling 기능수행중에 동시에 진행되지 않는다. 다른 모드로 변경하기 원한다면 별도의 Profiling 을 진행해야 한다.

  • Execution Time Analysis
  • Memory Analysis
  • Thread Analysis

NetBeans 의 Profiler 보다는 나은 성능을 보여주지만, YourKit 같은 상용툴에는 아직 미치지 못한다.


Ecipse 3.3.2 와 TPTP 4.4.1 설치하기

Eclipse 3.3.2 를 쓰기 위해서 다음 URL 에 있는 Eclipse for RCP/Plug-in Developers 를 다운받아서 설치한다.

http://www.eclipse.org/downloads/

이 글에서는 다음 화면과 같이 c:\eclipse 에 설치한 것으로 간주한다.


TPTP 4.4.1 은 Eclipse 의 update 기능으로 설치한다.

우선, 메너에서 Help > Software Updates > Find and Install 을 선택해서 "Install/Update" 창을 띄운 후, "Search for new features to install" 옵션을 선택하고 Next 버튼을 누른다.

그 다음, "Europa Discovery Site" 을 선택하고 Next 버튼을 누르고, "Update site mirrors" 창에서 적절한 미러 사이트를 선택한다. (이 글을 쓰는 시점에서 Daum 측 미러사이트는 EMF 업데이트가 안되는 문제가 있어 KAIST 측 미러사이트로 진행했다.)

이제 다음 화면과 같이 Updates 창에서 "Testing and Performance" 과 "Select Required" 버튼을 누르고 Next 버튼을 누른다.


이후 안내를 따라 진행하다가 설치가 끝난 후 Eclipse 를 재시작시킨다.


Profiliing 할 Java 프로젝트 준비하기

먼저, Integrated Agent Controller 는 기본으로 비활성화되어 있다.

이를 활성화하기 위해 다음 그림과 같이 Preferences - Agent Controller - Integrated Agent Controller 화면에서 Enable 을 선택하고 OK 버튼을 누른다.

 


이제, 다음과 같이 LookAtMe 라는 Java 프로젝트를 만든다.


소스코드는 다음과 같다.

package lookatme;

public class LookAtMe extends Thread
{
    private long sleepTime;

    private int count;

    private static int getCount;

    LookAtMe(long sleepTime)
    {
        this.sleepTime = sleepTime;

        count = getCount();
    }

    private static int getCount()
    {
        synchronized (LookAtMe.class)
        {
            return ++getCount;
        }
    }

    public void run()
    {
        while (true)
        {
            System.out.printf("%d: %d\n", count, sleepTime);

            try
            {
                sleep(sleepTime);
            } catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args)
    {
        new LookAtMe((System.currentTimeMillis() % 3000) + 100).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 300).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 500).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 700).start();
        new LookAtMe((System.currentTimeMillis() % 3000) + 900).start();
    }
}


Window - Profile... 메뉴를 선택해서 다음 화면과 같이 LookAtMe 라는 Profile Configuration 을 만든다.


다음 화면과 같이 Monitor 탭에서 3가지 Profiling 모드중에서 하나를 선택할 수 있다. 우선은 Execution Time Analysis 를 선택해둔다.


위 화면에서 Profile 버튼을 누르거나, 다음 화면과 같이 Profile 실행버튼에서 LookAtMe Configuration 을 선택해서 Profiling 을 시작한다.


Profiling 하기 - Execution Time Analysis

이전에 만든 LookAtMe_remote 라는 Profile Configuration 을 실행하면 Profiling and Logging Perspective 로 바뀌면서 Monitor 탭에서 설정했던 대로 Execution Time Analysis 를 할 수 있다.

다음 화면은 Execution Time Analysis 를 한 직후의 모습이다.


왼쪽 트리에서 방금 실행한 Profile 세션에 있는 Execution Time Analysis 를 더블클릭하면 다음 화면과 같이 Session summary 를 볼 수 있다.


하단에 있는 탭을 이용하면 다른 정보들을 얻을 수 있는데, 우선, Filter 설정을 없애야 모든 정보를 볼 수 있으므로 다음 화면과 같이 Execution Statistics 에서 No Filter 설정을 한다.


다음 화면은 No Filter 설정이 된 Execution Statistics 이다.


다음 화면은 Call Tree 에서 LookAtMe(long) 생성자를 선택한 모습이다.


다음 화면은 Method Invacation Details 에서 LookAtMe(long) 생성자를 보는 모습이다.


다음 화면은 Method Invation 에서 getCount() 메소드를 보는 모습이다.


왼쪽 트리에서 방금 실행한 Profile 세션에 있는 Execution Time Analysis 를 더블클릭하지 않고, 오른쪽 마우스버튼을 이용하면 다른 형식으로 화면을 열 수도 있다.

다음 화면은 Execution Flow 를 보는 모습이다.


다음 화면은 UML2 Class Interactions 를 보는 모습이다.


UML2 Class Interactions 화면에서 빨간 색 부분에 마우스 포인터를 대면 다음 화면가 같이 실행시간이 표시된다. 빨간 색이 짙을 수록 실행시간이 긴 것을 나타낸다.


다음 화면은 Class Thread Interactions 화면을 보는 모습이다.


이 모든 결과는 현재 Profiling 되는 실시간 값이며, Profiling 을 중지하면 중지한 순간까지의 결과를 볼 수 있다.


Profiling 하기 - Memory Analysis

다음 화면은 LookAtMe Configuration 의 Monitor 탭에서 Memory Analysis 를 선택하고 실행한 뒤, lookatme.LookAtMe 클래스에 대한 Memory Statistics 를 보는 모습이다. (오른쪽 위에서 클래스 대신 패키지 기준으로 보도록 선택했다.)


다음 화면은 이전 화면에서 lookatme.LookAtMe 클래스를 더블클릭하거나 이 클래스가 선택된 상태에서 하단 탭의 Allocation Details 를 선택한 모습이다.


이 화면들에서 각 컬럼의 의미는 다음과 같다.

  • Live Instances
    • GC 되지 않고 살아있는 인스턴스
  • Active Size (bytes)
    • 해당 인스턴스 자체가 Heap 에서 차지하고 있는 용량
  • Total Instances
    • GC 된 인스턴스와 GC 되지 않은 인스턴스의 총합
  • Total Size (bytes)
    • 해당 인스턴스에 대해 GC 된 용량과 살아있는 용량을 합한 용량
  • Avg. Age
    • 한 번의 GC 에서 살아남으면 Age 가 하나 증가한다.

테스트 프로그램에 대해 Profiling 하기 - Thread Analysis

다음 화면은 LookAtMe_remote 의 Monitor 탭에서 Thread Analysis 를 선택하고 실행한 뒤, Thread Statistics 를 보는 모습이다. (상단의 Show Call Stack 버튼을 누른 상태이다.)


다음 화면은 Threads Visualizer 를 보는 모습이다.


 
 
     , , , , ,
     1   0

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 | 다음>>

mindwing's Blog is powered by Daum

 

티스토리 툴바