다음과 같은 테스트케이스를 프로파일링 해봤습니다.

package kr.pe.okjsp.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import junit.framework.TestCase;

public class DateUtilTest extends TestCase {
 public void testIsValidDate() {
  assertTrue(isValidDate("20080229"));
  assertFalse(isValidDate("20090229"));
 }

 public boolean isValidDate(String date) {
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  String format = null;
  try {
   format = sdf.format(sdf.parse(date));
  } catch (ParseException e) {
   e.printStackTrace();
  }
  return date.equals(format);
 }
}


TPTP를 이용해서 나온 프로파일링 퍼스펙티브의 좌측 Profiling Monitor에서 오른 버튼을 눌러나오는 Open With > UML2 Class Interactions 메뉴를 선택하면 다음과 같이 시퀀스 다이어그램이 나옵니다.

사용자 삽입 이미지


빨간 포인트가 실행시간이 가장 오래 걸리는 부분임을 알 수 있지만, 그래프의 길이가 불필요하게 긴 듯 합니다.
홈 아이콘을 클릭한 뒤에 제일 좌측에 있는 TestSuite 클래스를 가려보겠습니다. 오른버튼 클릭해서 Hide selected lifeline 을 선택합니다.
사용자 삽입 이미지

이런 식으로 TestResult 와 TestResult$1 을 가리면 다음과 같은 그래프를 볼 수 있습니다.
사용자 삽입 이미지

가려진 클래스를 다시 보게 하려면 우측 상단의 하얀 역삼각형 ViewMenu 를 선택하고 Hide/Display Patterns... 메뉴를 클릭합니다.
사용자 삽입 이미지
여기에서 체크를 지워주면 보입니다.
사용자 삽입 이미지

천천히 하나씩 알아가야죠. ^^
TPTP
Test and Performance Tools Platform
TPTP는 테스트 툴과 퍼포먼스 툴의 플랫폼 프로젝트입니다. 자바 프로그램 실행시 CPU, 메모리 등과 객체 호출 및 인스턴스의 갯수 상태를 확인하기 위해 만들어진 것입니다.
자바 VM 뿐만 아니라 OS 등과 맞물려 각종 정보를 수집합니다.

http://www.eclipse.org/tptp
Windows와 Linux 용 all-in-one 버전을 받아서 설치하면 간편하게 설치됩니다. Active Control Server의 설치가 자동으로 되기 때문이죠. 맥용은 없습니다. ㅡㅡ;

Run, Debug 에 이은 Profile 기능을 이용하면 다음과 같이 Monitor 탭이 생깁니다. Execution Time analysis 는 클래스, 메소드 간의 실행시간 등을 기초로 하여 실행과정을 보여줍니다.
사용자 삽입 이미지

실행을 하면 Profiling Manager View가 열립니다.
사용자 삽입 이미지

Execution Time Analysis를 클릭해서 열린 보다 구체적인 내용입니다.
사용자 삽입 이미지

아래 탭을 클릭하면 다른 내용들을 볼 수 있습니다. Call Tree 탭을 클릭한 경우 다음과 같이 CPU 소모비율도 확인 가능합니다.
사용자 삽입 이미지

Profiling Manager 에서 오른클릭메뉴로 UML2 Class Trace를 선택하면 시퀀스다이어그램을 볼 수 있습니다. 이거 대박이죠. ^^
사용자 삽입 이미지
오전 9시부터 12시까지 토즈 신촌 본점에서 JUnit과 TPTP실습세미나를 진행했습니다.
오후 3시부터 6시까지는 한경닷컴 교육센터 양평점에서 자바카페의 초대로 이클립스 기본에 관하여 세미나를 했구요.

오전 세미나는 실습이라 대략 천천히 내용이 진행되었습니다. JUnit의 이론부터 TDD의 처음부터 하나씩 짚어갔습니다. 때문에 TPTP 내용 전달에서 많은 정보를 주지 못해서 미안했습니다만 이 블로그를 통해서 더 내용을 채워가고 싶다고 얘기하기도 했습니다.

에이콘 출판사의 후원으로 GWT 구글 웹 툴킷 서적과 방어형 웹사이트 기획 그리고 웹 개발2.0 루비 온 레일즈를 추첨(제맘대로?)으로 나눌 수 있었습니다.

오후 자바카페 세미나는 30명 정도의 많은 분들이 참석했는데, 강의장이 쾌적해서 재밌게 진행할 수 있었습니다. 종종 양평역 근처의 한경닷컴 교육센터를 이용하면 좋겠습니다.

뒷풀이는 강의 때 못다한 얘기들이 오갔고, 늦게까지 진행되었습니다.

돌아오는 금요일 자바성능에 관한 좋은 세미나를 열게 됩니다. 무사히 좋은 시간으로 마치면 좋겠습니다.

급한 IBM의 협찬으로 볼펜과 샤방한 developerWorks 스티커를 가지고 갔습니다.
한 시간은 JUnit에 대한 이론, 다른 한 시간은 JUnit의 실제 사용, 그리고 세 번 째 시간은 TPTP의 프로파일링에 대한 가벼운 리뷰 정도가 되었습니다.

관련 자료는 http://okjsp.tistory.com/tag/test 에서 확인할 수 있습니다.

강의를 준비하면서 가장 인상 깊었던 것은 상용 JProfiler 못지 않게 좋아진 TPTP였습니다.

좀 더 많이 연구를 해서 공유를 해야할 것 같네요.

참가하신 분들 긴 시간 동안 잘 들어주셔서 고맙습니다.
그리고 IBM dW 고맙습니다. ^^

http://www.eclipse.org/articles/Article-TPTP-Profiling-Tool/tptpProfilingArticle.html
문서에 있는 내용은 TPTP 초보자 가이드입니다. 프로파일링을 할 수 있도록 도와주는 것이죠. Test and Performance Tools Platform 이라는 말에서 알 수 있듯이 테스트와 성능진단을 위한 툴들의 플랫폼입니다. 기능이 무진장 많아서 어떻게 시작해야될지 막막한 느낌이 들기는 합니다.

설치를 간편히 하시려면 기존의 이클립스는 놔두시고, all-in-one버전을 받으시길 권장합니다.
ㅠㅠ; 맥용은 all-in-one버전이 없습니다. ^^;
http://www.eclipse.org/tptp/home/downloads/
사용자 삽입 이미지

문서에 있는 샘플을 실행해서 나온 리포트입니다.
사용자 삽입 이미지

몇 번 호출이 되었는지 CPU는 얼마나 사용되었는지, 호출 시간은 어떻게 되고 누적시간은 어떤지 보여줍니다.

공부할 게 또 생겼습니다. 그려~

related:
http://www.eclipse.org/tptp/home/documents/tutorials/profileOnServer/TPTP-WTP.html

+ Recent posts