2013-12-08 5 views
1

저 지연 프로그래밍과 관련하여 읽은 다음 진술을 이해할 수있는 사람이 있습니까?목록을 사용하여 대기 시간이 짧음

소유하고있는 객체의 수를 최소화하십시오. 예를 들어, ArrayList/ArrayDeque와 같은 배열 기반 구조를 LinkedList와 같은 포인터 기반 구조에 사용하는 것이 좋습니다.

arraylist는 단편화 된 힙에서 더 나은 성능을 보일 수 있지만 적은 객체 만 포함한다는 것을 깨닫지 못했습니다.
반대로, 실제로 arraylist는 실제로 필요한 것보다 많은 물체를 만들어야한다는 것을 알고있었습니다.

+1

어디에서 읽었습니까? –

+0

LinkedList의 노드는 일반적으로 요소 당 24-32 바이트의 메모리를 사용합니다. ArrayList는 일반적으로 요소 당 4-8 바이트를 사용합니다. –

답변

3

LinkedListNode 개체를 사용하여 추가 한 각 요소를 래핑합니다. 따라서 LinkedList에 10 개의 개체를 추가하는 경우 실제로는 10 개의 개체가 필요합니다.

ArrayList은 추가 및 제거를 기반으로 수시로 백업 배열을 재생성하지만 추가하는 모든 객체를 보유하기 위해 하나의 백업 배열 객체 만 필요합니다.

가비지 수집 및 개체 생성이 항상 무시할 수있는 것은 아닙니다.

+0

단지'''Node'''를 추가하는 것 이상으로, 그 노드들은 반드시 인접한 메모리에있을 필요가 없기 때문에'''iterator.next()'''는 캐시 미스 일 수 있습니다. –

관련 문제