2009-11-02 63 views
37

PLINQ đã được thêm vào trong .NET 4.0 Framework dưới dạng phần mở rộng cho LINQ.Chính xác PLINQ là gì?

  • Nó là gì?
  • Giải quyết vấn đề gì?
  • Khi nào thích hợp và khi nào?

Trả lời

35

Đây là LINQ song song. Đó là một cách để chạy LINQ truy vấn song song trên hệ thống đa lõi/đa bộ vi xử lý, để (hy vọng) tăng tốc độ chúng lên.

Có một bài viết hay về điều này trong MSDN Magazine.

Để biết chi tiết và kế hoạch hiện tại, tôi khuyên bạn nên đọc các bài viết trên Parallel Programming with .NET Team Blog. Họ là nhóm thực hiện các phần mở rộng song song, bao gồm cả PLINQ.

+2

Tạp chí MSDN không liên kết sâu đến một bài viết, nhưng blog vẫn tốt, vì vậy bạn vẫn nhận được phiếu bầu của tôi. –

1

Từ Wikipedia Parallel Extensions:

LINQ Parallel (PLINQ) là một công cụ thực hiện truy vấn đồng thời cho LINQ, parallelizing việc thực hiện các truy vấn trên các đối tượng (LINQ to Objects) và dữ liệu XML (LINQ to XML) . PLINQ được thiết kế để phơi bày song song dữ liệu bằng cách sử dụng các truy vấn. Bất kỳ tính toán nào trên các đối tượng đã được thực hiện dưới dạng truy vấn có thể được PLINQ song song. Tuy nhiên, các đối tượng cần phải thực hiện giao diện IParallelEnumerable, được xác định bởi chính PLINQ. Bên trong nó sử dụng TPL để thực thi.

+0

Tiện ích song song! = PLINQ. PLINQ là một phần nhỏ của phần mở rộng song song mới được thêm vào .NET 4, nhưng không, bằng mọi cách, tất cả công việc PFX. –

+4

@Reed Tất nhiên. Tôi chỉ đơn thuần là liên kết đến Wikipedia, đó là kết quả thứ ba của truy vấn Google cho "PLINQ" và có một phần trên LINQ song song. Đó là một câu trả lời nhỏ nhặt cho một câu hỏi tầm thường. – Greg

10

Đây là thư viện cho phép bạn thực hiện truy vấn LINQ bình thường, chia thành các tác vụ nhỏ hơn và thực hiện từng tác vụ trên nhiều luồng tận dụng lõi bộ xử lý.

3

Nó cho phép bạn thêm. AsParallel vào LINQ của bạn để cố gắng thực hiện truy vấn bằng cách sử dụng nhiều bộ xử lý nhất có thể. Neat, nhưng bạn vẫn cần phải biết một chút về việc thuật toán của bạn là "song song" - nó không phải là ma thuật. Nó về cơ bản loại bỏ sự cần thiết phải quản lý một hồ bơi thread và quản lý đồng bộ hóa các kết quả trở lại từ mỗi thread - bình thường mà không có thư viện mở rộng song song, bạn sẽ phải làm điều này bằng tay.

+0

Hãy nhớ rằng, không phải mọi thứ đều có .AsParallel cho LINQ, một ví dụ tốt là DataTable. – Si8

15

PLINQ là LINQ được thực hiện song song, tức là sử dụng nhiều sức mạnh xử lý như bạn có trong máy tính hiện tại của mình.

Nếu bạn có một máy tính có 2 lõi như bộ xử lý lõi kép, bạn sẽ nhận được toán tử Truy vấn tích hợp ngôn ngữ thực hiện công việc song song bằng cả hai lõi.

Sử dụng "chỉ" LINQ bạn sẽ không nhận được nhiều hiệu suất vì các toán tử Truy vấn tích hợp ngôn ngữ chuẩn sẽ không song song mã của bạn. Điều đó có nghĩa là mã của bạn sẽ chạy theo kiểu nối tiếp không tận dụng được tất cả các lõi bộ xử lý có sẵn của bạn.

Có rất nhiều toán tử truy vấn PLINQ có khả năng thực thi mã của bạn bằng cách sử dụng các mẫu song song nổi tiếng.

Hãy xem bài viết trên blog của tôi trong đó tôi hiển thị tốc độ lên bạn nhận được khi bạn chạy một truy vấn LINQ đơn giản trong Parallel sử dụng phương pháp mở rộng AsParallel:

Parallel LINQ (PLINQ) with Visual Studio 2010/2012 - Perf testing

Nếu bạn muốn đi sâu sử dụng PLINQ, tôi khuyên bạn nên đọc:

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4