2011-11-09 32 views

Trả lời

5

thứ hai. Tất cả những thứ khác bằng nhau, trình lặp trong trường hợp thứ hai có thể dừng lại ngay sau khi nó tìm thấy một kết quả phù hợp, trong đó người đầu tiên phải tìm tất cả những gì phù hợp, và sau đó chọn cái đầu tiên.

+4

Tôi tin rằng 'Where' dẫn đến" chiếu "hoặc" chuỗi số đếm lười biếng "(trong khi có thể có thêm một chút chi phí, nó không cần phải chạy qua bất kỳ phần tử nào khác từ' ResultList', xem lưu ý kết thúc), nhưng tôi chọn cái sau trong hầu hết các trường hợp .... trong trường hợp của LINQ2SQL hoặc tương tự, tôi không biết máy tạo truy vấn sẽ làm gì. –

+5

Không đúng - Hành vi chuỗi của LINQ có nghĩa là nó lặp lại một cách lười biếng. Đối với cả hai cách tiếp cận nếu mục đầu tiên là một trận đấu, họ sẽ không tiến xa hơn nữa. – Enigmativity

+3

@Enigmativity: điều đó không đúng đối với tất cả các nhà cung cấp LINQ. Trong khi nó đúng với LINQ to Objects, các nhà cung cấp dựa trên nền tảng SQL phải trả về (hoặc ít nhất là process) toàn bộ thiết lập trước khi trả về đối tượng đầu tiên. Điểm mấu chốt là bất kể những gì tối ưu hóa cơ bản mà các nhà cung cấp nhất định đưa ra, vì bạn không thể dựa vào nó là đúng trong mọi trường hợp, tốt hơn là nên cân nhắc hành vi đúng đắn, tất cả những thứ khác bằng nhau. –

17

Hoặc là tốt.

Cả hai đều chạy lười biếng - nếu danh sách nguồn có hàng triệu mục, nhưng mục thứ mười phù hợp thì cả hai sẽ chỉ lặp lại 10 mục từ nguồn.

Hiệu suất phải gần như giống hệt nhau và mọi khác biệt sẽ hoàn toàn không đáng kể.

+1

Không có sự khác biệt là ** không đáng kể ** - 1ms trên một nghìn mục được gọi là bởi 500 người dùng mỗi ngày cộng thêm rất nhiều thời gian. – TheGeekZn

+4

@NewAmbition - Bạn đang nói ít hơn một phần trăm mỗi ngày. Đó không phải là rất nhiều thời gian. Sự khác biệt tôi nhận được khi tôi so sánh hai phương pháp tiếp cận là làm việc ra được 1ms cho hơn 150.000 mục (không phải 1ms cho mỗi mục, nó là 1ms cho tất cả 150.000). Vì vậy, dựa trên đó truy vấn 500 x 1.000 mục của bạn là khoảng 0,003 mili giây mỗi ngày. Nó không đáng kể. – Enigmativity

+4

Tôi nghĩ từ sẽ nghiêng, không in đậm: | Bạn nói đúng, mặc dù tôi đã sử dụng một ví dụ cồng kềnh. Tôi đã không có ý định âm thanh douchey, chỉ là đôi khi các hit hiệu suất nhỏ có thể thêm lên :) – TheGeekZn

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