2013-01-02 6 views
0

싱글 톤 클래스를 가지고 있고 컬렉션을 싱글 톤 클래스의 일반 필드로 갖는 개체 컬렉션에 대한 정적 참조 사이에 성능 차이가 있는지 묻고 싶습니다.정적 컬렉션의 성능 대 싱글 톤의 필드

정적 필드는 내가 아는 한 힙의 다른 부분에 저장되므로이 경우에는 싱글 톤을 사용할 때 참조 영역이 더 좋지 않습니까?

+0

"힙의 다른 부분"에 대해 이야기 할 때 다른 세대를 의미하는 것 같지만 성능에 차이가 없다고 확신합니다. 유일한 차이점은 개체를 한 세대에서 다른 세대로 실제로 옮길 때 발생하지만 여전히 컬렉션에 대해 이야기 할 때 그 영향은 거의 존재하지 않는다는 것입니다. 컬렉션 내부의 데이터와 컬렉션이 문제에 대한 올바른 유형인지 여부에 더 관심을 가져야합니다. 성능 문제를 사용 된 언어에 가깝게 묻는 것은 결코 좋은 시작이 아닙니다. – dowhilefor

+0

무엇에 대한 참조의 지역성? 두 경우 모두 필드가 참조 일 뿐이며 * 두 경우 모두 정적 필드가 필요하다는 것을 명심하십시오. (싱글 톤의 경우 정적 필드는 싱글 톤 자체에 대한 참조입니다.) –

+0

내 조언은 [MeasureIt] (http://blogs.msdn.com/b/vancem/archive/2009/02/06/)입니다. measure- update-tool-for-doing-microbenchmarks.aspx) ... – rene

답변

0

정적 저장소에 대해 느린 유일한 점은 정적 필드에 대한 읽기 또는 쓰기입니다. 정적 필드에서 컬렉션 인스턴스 또는 싱글 톤 인스턴스를 얻은 후에는 성능 차이가 없습니다. 지금 개체 참조가 있고 정적 저장소를 더 이상 만지지 않습니다.

정적 필드에서 참조 된 개체의 메모리는 필드에 저장되지 않습니다. 힙에 저장됩니다. 참조 만 정적 저장소입니다.

정적 저장소와 인스턴스 저장소 간의 성능 차이도 매우 작습니다.

이제 무엇이 더 빠릅니까? singleton-instance 변형은 하나의 컬렉션 대신 2 개의 메모리 deference 조작을 통과해야만하기 때문에 느립니다.

+0

감사합니다 것들이 훨씬 더 명확합니다 :) – sirival