Programing

대기열의 기본 기능을 갖춘 가장 빠른 Java 컬렉션은 무엇입니까?

crosscheck 2020. 11. 12. 07:55
반응형

대기열의 기본 기능을 갖춘 가장 빠른 Java 컬렉션은 무엇입니까?


Java에서 가장 빠른 컬렉션은 무엇입니까?

추가하고 제거하는 작업 만 필요하고, 순서는 중요하지 않으며, 동등 요소는 문제가되지 않으며, 추가 및 제거 만 중요합니다.

제한없이 크기도 중요합니다.

이 컬렉션에는 그 안에 개체가 있습니다.

현재 나는 이것이 더 빠른 큐 구현이라는 것을 알기 때문에 ArrayDeque를 사용하고 있습니다.


ArrayDeque최고. 이를 벤치마킹 한 결과에 대한 이 블로그 게시물 에서 가져온 이 벤치 마크를 참조하십시오 . ArrayDeque노드 할당 LinkedList의 오버 헤드도없고 제거시 남은 배열 내용을 이동하는 오버 헤드도 없습니다 ArrayList. 벤치 마크에서는 큰 대기열과 마찬가지로 3 배의 성능 을 발휘하며 빈 대기열 LinkedList보다 약간 더 좋습니다 ArrayList. 최상의 성능을 위해 많은 크기 조정을 방지하기 위해 한 번에 보유 할 수있는 요소 수를 보유 할 수있을만큼 충분히 큰 초기 용량을 제공 할 수 있습니다.

사이 ArrayListLinkedList, 그 큐가 주어진 시간에 포함됩니다 총 요소의 평균 수에 따라 달라 보인다 LinkedList박동이 ArrayList약 10 원소에서 시작.


a를 사용할 수 있습니다 java.util.LinkedList-이중으로 연결되고 원형이므로 한쪽 끝에 추가하고 다른 쪽 끝에서 가져 오는 것은 O (1)

어떤 구현을 선택하든 Queue인터페이스 에서 참조 하여 사례에 맞지 않는 것으로 판명되면 쉽게 변경할 수 있습니다 (물론 대기열이 처음에 필요한 것입니다).

업데이트 : Colin의 답변 ArrayDeque은 더 낫다는 결론을 내리는 벤치 마크를 보여줍니다 . 둘 다 O (1) 작업이 있지만 LinkedList약간 성능이있는 새 개체 (노드)를 만듭니다. 둘 다 O (1)을 가지고 있기 때문에 나는 선택하는 것이 너무 잘못되었다고 생각하지 않습니다 LinkedList.

참고 URL : https://stackoverflow.com/questions/6129805/what-is-the-fastest-java-collection-with-the-basic-functionality-of-a-queue

반응형