Static으로 선언된 메소드와 일반 메소드의 비교.
어느 정도의 속도차이를 내는지 알아보았다.
테스트 조건
1. 10억 번 루프를 돌려 수행 시간을 얻는다.
2. 1번을 10번 수행하여 평균을 얻는다.
결과
단위 milli-Second
-- 동일 클래스 상에서 속도 체크(함수로 호출) --
Normal 은 동일 클래스의 static이 아닌 변수를 1씩 증가 시키는 함수를 루프 시킨 결과.
Static 는 동일 클래스의 static 변수를 1씩 증가 시키는 static 함수를 루프 시킨 결과.
-- 동기화 고려된 메소드 ---
Normal은 동기화로 선언한 일반 메소드를 호출.
Static는 동기화로 선언한 static 메소드를 호출.
-- 외부 클래스에서의 비교 값 --
Normal은 인스턴스 생성 후 그 인스턴스의 멤버 변수를 1씩 증가 시키는 함수의 루프 결과.
Static 는 인스턴스 생성 없이 다른 클래스의 static 멤버변수를 1씩 증기 시키는 static 함수 루프.
-- 외부 클래스에서의 비교(단순 참조) --
Normal은 인스턴스 생성 후 다른 예 처럼 1씩 카운터 하지 않고 단순히 값만 읽음.
Static은 인스턴스 생성 없이 역시 1씩 카운터 하지 않고 단순히 값만 읽음.
결과
-동일 클래스 상에서는 static이 더 느리다.(10%)
-동기화 되었을 경우는 더욱 더 느리다.(20%)
-동일 한 작업을 다른 클래스에서 수행할 때 static는 시간의 아무 변화 없으나
일반 메소드는 동일 클래스 상에서 보다 작업시간이 10% 가량 더 필요하다.
-다른 클래스에서의 작업 시간은 static나 일반 메소드나 비슷하다.
-다른 클래스의 변수 참조는 static이 더 느리다(30%)
'Computer > Java' 카테고리의 다른 글
Programming Language.... (0) | 2007.08.17 |
---|---|
[Data Structure2] Graph Matrix (0) | 2006.10.22 |
[Data Structure2] Binary Tree (Linked List) (0) | 2006.10.09 |
[Data Structure2] Max Heap (for int array) (0) | 2006.10.09 |
[tip] 화면 크기 구하기. (0) | 2006.08.04 |