2012-10-20 7 views
5

Trong Java, theo cách sử dụng tập hợp, chúng tôi không sử dụng cùng một triển khai (ví dụ: ArrayList vs LinkedList).Java -> Scala, biểu diễn trên bộ sưu tập

Đến từ nền Java, ai đó có thể cho tôi biết tôi nên biết gì về bộ sưu tập Scala và cân nhắc hiệu suất?

Dường như phiên bản bất biến của Danh sách Scala là một số loại LinkedList bất biến. Tôi hiểu các khái niệm, theo các khóa học Martin Odersky trên Coursera. Trong cùng một cách tôi hiểu tại sao nó hiệu quả hơn để thêm vào trước để nối thêm, đặc biệt khi bạn có một danh sách bất biến.

Tôi muốn biết tất cả (hoặc hầu hết) những điều khó hiểu này về các buổi biểu diễn thu thập Scala, để tôi không tìm thấy nó theo cách khó khăn. Ai đó có thể giúp tôi?

Cảm ơn

+0

Tôi khuyên bạn nên xem [this talk] (http://www.infoq.com/presentations/Functional-Data-Structures-in-Scala) bởi Daniel Spiewak. Nó đưa ra một tổng quan tuyệt vời về cách scala quản lý để có hiệu suất tương đương với Java trong khi vẫn giữ cấu trúc dữ liệu của nó không thay đổi. – rjsvaljean

+1

Nó sẽ không cung cấp cho bạn rất nhiều bên trong, nhưng như một tổng quan chung bạn có thể tìm thấy [this] (http://www.scala-lang.org/docu/files/collections-api/collections_40.html) hữu ích. –

Trả lời

8

Có tài liệu describes collection performance characteristics. Ngoài ra, bạn thực sự nên kiểm tra trường hợp sử dụng của bạn trong một microbenchmark. Trong một số trường hợp, các bộ sưu tập Scala có hiệu suất rất gần với các bộ sưu tập Java; ở những người khác có một khoảng trống (ví dụ: bản đồ); ở những người khác không có tương tự Java và so sánh bất biến so với phụ thuộc rất lớn vào cách bạn sử dụng bộ sưu tập (với, rõ ràng, đột biến nặng có lợi cho các bộ sưu tập có thể thay đổi được, và sử dụng lại/sao chép nặng các bộ sưu tập bất biến).

1

Điều này không trả lời cụ thể câu hỏi của bạn, nhưng để sử dụng chung tôi không nghĩ bạn sẽ nhận thấy sự khác biệt giữa bộ sưu tập java và scala. Tôi không nhận thấy nó ít nhất :) Nói chung tôi nghĩ rằng mọi người sớm tối ưu hóa bằng cách lo lắng về những thứ này (mặc dù bạn có thể có một trường hợp sử dụng hoàn toàn hợp lệ mà bạn cần tối ưu hóa).

Cá nhân tôi thích sử dụng bộ sưu tập scala hơn bộ sưu tập java vì API của họ và vì tôi chưa bao giờ gặp vấn đề với hiệu suất, tôi chưa bao giờ thực sự xem xét điểm chuẩn java so với scala.

Như Rex nói mặc dù, nếu bạn lo lắng về nó (hoặc chỉ cần tự hỏi), thiết lập một điểm chuẩn trên trường hợp sử dụng cụ thể của bạn sẽ hữu ích.

+0

Tôi thậm chí không nhận thấy sự khác biệt về sự khác biệt giữa danh sách mảng và danh sách liên kết trong hầu hết các trường hợp. Tôi chỉ muốn so sánh Java vs Scala trong trường hợp tôi có một danh sách lớn với rất nhiều lần đọc hoặc viết nhiều :) –