2012-06-10 26 views
11

Tôi đã được thông qua thư viện Google Guava và phát hiện rất nhiều cấu trúc dữ liệu tốt, có thể sử dụng trong đó.Hiệu suất khôn ngoan, thư viện ổi tốt đến mức nào?

Nếu có ai khác đã sử dụng nó thì bạn có thể cung cấp phản hồi về cách nó được thực hiện khi được sử dụng với bộ dữ liệu khổng lồ không? Về cơ bản tôi đang tìm kiếm ký hiệu BigO cho các hoạt động của nó.

Cảm ơn trước

+2

Bạn đang tìm kiếm hiệu suất hoạt động nào? –

+3

Thư viện ổi là lớn. Bạn đang xem xét các hoạt động nào? – Perception

+1

Thật tuyệt vời khi cung cấp một biểu đồ cho các hoạt động Bộ sưu tập mới (MultiSet, Multimap, BiMap, Table). Giống như trong bộ sưu tập java [Ký hiệu BigO] (http://simplenotions.wordpress.com/2009/05/13/java-standard-data-structures-big-o-notation/). –

Trả lời

35

Người đóng góp chính tại đây.

Um, có gì để nói? Tất cả các bộ sưu tập dựa trên hàm băm (và dựa trên enum) đều có các hoạt động vào một lần trong thời gian không đổi, chính xác như bạn mong đợi. (HashMultiset, LinkedHashMultiset, ConcurrentHashMultiset, HashBiMap, HashBasedTable, ImmutableSet, ImmutableMap, EnumMultiset, EnumBiMap, vv tất cả rơi vào thể loại đó.) Tất cả các bộ sưu tập cây-based/sắp xếp có thời gian cho các hoạt động logarit đơn nhập cảnh của họ, bao gồm TreeMultiset, ImmutableSortedMap, và ImmutableSortedSet.

Trong số nhiều ảnh, tốt, tài liệu về cơ bản sẽ cho bạn biết Map và việc triển khai thu thập giá trị và bạn có thể tìm ra từ đó. HashMultimap cơ bản là một HashMap để HashSet s, LinkedHashMultimap là một LinkedHashMap-LinkedHashSet s, ArrayListMultimap là một HashMap để ArrayList s, LinkedListMultimap là một LinkedHashMap-LinkedList s (hiệu suất-khôn ngoan, nếu không muốn nói về mặt kỹ thuật true), TreeMultimap là một TreeMap-TreeSet s , ImmutableSetMultimap là một ImmutableMap đến ImmutableSet s, ImmutableListMultimap là một ImmutableMap đến ImmutableList s.

Điều duy nhất có thể không hiển nhiên là có thể triển khai SortedMultiset cung cấp các hoạt động subMultiset().size() trong thời gian O(log n) mà bạn không thể thực hiện chỉ với JDK TreeMap<E, Integer>.

Tất cả chế độ xem của bộ sưu tập (chúng tôi thích lượt xem nhiều) trở lại trong thời gian không đổi và có các tiệm cận kề bạn mong đợi.

Có điều gì cụ thể hơn mà bạn quan tâm không?

(Nói chung, Guava về cơ bản là các thư viện cốt lõi mà Google sử dụng trong sản xuất, mà tôi muốn cho là bằng chứng khá mạnh mẽ rằng các tiện ích hoạt động tốt trong môi trường công việc nặng. bạn sẽ nhận được những cải thiện đó một cách cơ bản miễn phí.)

+1

Tổng kết, xem [Bộ sưu tập không thể thay đổi] (http://code.google.com/p/guava-libraries/wiki/ImmutableCollectionsExplained#Where?) Và [Loại bộ sưu tập mới] (http://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained) cho các bảng giải thích tốt hơn loại nào được hỗ trợ bởi những gì. –

+0

Câu trả lời ấn tượng. –

+1

Meh. Ý tôi là ... không ai trong số này nên là _surprising._ Chắc chắn, đó là một trong những ưu tiên của Guava để đảm bảo rằng không có bất ngờ về những điều này ... –

Các vấn đề liên quan