singleton VS prototype 객체 성능 비교

싱글톤과 프로토타입 객체에 대한 성능 비교를 위해 아래와 같이 테스트 코드를 작성하였다.

싱글톤은 객체 한 개만 생성한 후 그 안에 있는 test() 메소드를 호출하였고, 프로토타입은 매번 객체를 생성한 후 test() 메소드를 실행하였다.

헌데 테스트 결과가 이상하다.

 쓰레드 count

싱글톤 

프로토타입 

10,000

 1.651초

 1.594초

 20,000

 3.158초

 3.306초

 30,000

 4.59초

 4.978초

 40,000

 6.545초

 6.261초

 50,000

 8.41초

 7.81초

 60,000

 9.456초

 9.65초

 70,000

 10.617초

 11.552초

 80,000

 12.78초

 12.752초

 90,000

 14.952초

 14.354초

 100,000

 16.184초

 15.169초

 1,000,000

 218.941초

 174.753초



분명 매번 객체를 생성하는 프로토타입을 이용한 테스트가 싱글톤 테스트보다 성능이 안 좋아야 한다.

하지만 테스트 결과는 그 반대를 보여주고 있다.

같은 테스트를 여러번 해도 수행 시간(초)의 미미한 차이만 있었지 결국 프로토타입 테스트가 대부분 싱글톤보다 빨랐다.

로컬 테스트 환경이라서 그런 걸까?

아니면 내가 알지 못하는 어떤 원인이? (아시는 분 댓글 좀 부탁 드립니다.)

여하튼 객체 생성 성능 비교를 해보니 싱글톤으로 설계를 하던 프로토타입으로 설계를 하던 큰 성능 차이는 없는 것 같다.