대기열의 기본 기능을 갖춘 가장 빠른 Java 컬렉션은 무엇입니까?
Java에서 가장 빠른 컬렉션은 무엇입니까?
추가하고 제거하는 작업 만 필요하고, 순서는 중요하지 않으며, 동등 요소는 문제가되지 않으며, 추가 및 제거 만 중요합니다.
제한없이 크기도 중요합니다.
이 컬렉션에는 그 안에 개체가 있습니다.
현재 나는 이것이 더 빠른 큐 구현이라는 것을 알기 때문에 ArrayDeque를 사용하고 있습니다.
ArrayDeque
최고. 이를 벤치마킹 한 결과에 대한 이 블로그 게시물 에서 가져온 이 벤치 마크를 참조하십시오 . ArrayDeque
노드 할당 LinkedList
의 오버 헤드도없고 제거시 남은 배열 내용을 이동하는 오버 헤드도 없습니다 ArrayList
. 벤치 마크에서는 큰 대기열과 마찬가지로 약 3 배의 성능 을 발휘하며 빈 대기열 LinkedList
보다 약간 더 좋습니다 ArrayList
. 최상의 성능을 위해 많은 크기 조정을 방지하기 위해 한 번에 보유 할 수있는 요소 수를 보유 할 수있을만큼 충분히 큰 초기 용량을 제공 할 수 있습니다.
사이 ArrayList
와 LinkedList
, 그 큐가 주어진 시간에 포함됩니다 총 요소의 평균 수에 따라 달라 보인다 LinkedList
박동이 ArrayList
약 10 원소에서 시작.
a를 사용할 수 있습니다 java.util.LinkedList
-이중으로 연결되고 원형이므로 한쪽 끝에 추가하고 다른 쪽 끝에서 가져 오는 것은 O (1)
어떤 구현을 선택하든 Queue
인터페이스 에서 참조 하여 사례에 맞지 않는 것으로 판명되면 쉽게 변경할 수 있습니다 (물론 대기열이 처음에 필요한 것입니다).
업데이트 : Colin의 답변 ArrayDeque
은 더 낫다는 결론을 내리는 벤치 마크를 보여줍니다 . 둘 다 O (1) 작업이 있지만 LinkedList
약간 성능이있는 새 개체 (노드)를 만듭니다. 둘 다 O (1)을 가지고 있기 때문에 나는 선택하는 것이 너무 잘못되었다고 생각하지 않습니다 LinkedList
.
'Programing' 카테고리의 다른 글
Eclipse에서 Maven 종속성 정렬 (0) | 2020.11.12 |
---|---|
모듈 식 필드 액세스 수정 자로서 Dim, Global, Public 및 Private의 차이점은 무엇입니까? (0) | 2020.11.12 |
savedInstanceState는 항상 null입니다. (0) | 2020.11.12 |
Systemd : 특정 서비스 후 서비스 시작 (0) | 2020.11.11 |
데스크탑 앱의 Slack 채널에서 기록의 특정 날짜 또는 가장 오래된 메시지로 이동하려면 어떻게합니까? (0) | 2020.11.11 |