Trông giống như clojure will have a fork-join implementation trông giống như một wrapper chức năng trên khuôn khổ ghép nối của java.clojure pmap/preduce vs fork-join
Tôi tự hỏi sự khác biệt giữa những điều này và pmap/preduce có thể là gì?
Trông giống như clojure will have a fork-join implementation trông giống như một wrapper chức năng trên khuôn khổ ghép nối của java.clojure pmap/preduce vs fork-join
Tôi tự hỏi sự khác biệt giữa những điều này và pmap/preduce có thể là gì?
Kết nối ngã ba tổng quát hơn số pmap
/preduce
theo trình tự và phải cho phép kiểm soát chi tiết hơn đối với tính song song. Các API chính xác để thực hiện điều này vẫn còn trong không khí.
Khi nhìn vào mã đó, chức năng của chúng sẽ hầu như giống nhau - khác biệt duy nhất là pmap
sử dụng Tương lai chạy trên luồng đại lý vì nó nằm nguyên thủy trong khi pvmap
sử dụng ghép nối.
Tôi không ở vị trí để chắc chắn, nhưng tôi hy vọng rằng bất kỳ cái nào hoạt động tốt hơn trong trường hợp chung sẽ trở thành triển khai chuẩn cho pmap
, trừ khi có đủ sự cân bằng đáng kể để làm cho cả hai đáng giá.
Nó cũng giống như (ít nhất là bây giờ) khung nối ghép chỉ hỗ trợ vectơ, vì vậy nó không bán lười như pmap
.
Một khác biệt, theo như tôi hiểu được, là pmap
sẽ chỉ chạy ở bất kỳ mức độ "chunkiness" nào được đưa ra. Hàm được ánh xạ trên mỗi thành viên của chuỗi được gán cho pmap
. Nếu mức độ chi tiết quá nhỏ thì lợi ích tiềm năng của tính song song sẽ bị nuốt chửng trong chi phí tạo và quản lý quá nhiều Future
s.
Fork-join cho phép đánh cắp công việc sao cho số lượng được chạy trên mỗi luồng có thể thích ứng.
Cả pmap hoặc pvmap sẽ không lưu chúng tôi phải sử dụng kích thước chunk chính xác. Đối với các dự án của tôi thường có nghĩa là phá vỡ dữ liệu thành các khối và sử dụng bản đồ trên từng đoạn, sau đó sử dụng pmap để ánh xạ các khối song song. sau đó giảm và làm phẳng.
Những slide chứa một số bảng xếp hạng cho thấy sự so sánh giữa hai phương pháp: http://data-sorcery.org/2010/10/23/clojureconj/
này sẽ là một chủ đề của một cuộc nói chuyện tại hội nghị Clojure-conj: http://clojure-conj.org/speakers#liebke David liebke hiện đang tích cực làm việc trên nó cho phiên bản tiếp theo của clojure –
@Alex rằng trừu tượng là những gì nhắc nhở câu hỏi này :). – Surya
Có bất kỳ suy nghĩ nào được đưa ra cho chiến lược triển khai để tham gia vào ngã ba trên ClojureCLR hoặc thường đảm bảo API ngã ba thân thiện với các triển khai thay thế không? –