มีการรับประกันอะไรบ้างเกี่ยวกับความซับซ้อนของเวลาทำงาน (Big-O) ของวิธีการ LINQ?
ฉันเพิ่งเริ่มใช้ LINQ ได้ไม่นานและฉันไม่เห็นการกล่าวถึงความซับซ้อนของรันไทม์สำหรับวิธีการใด ๆ ของ LINQ เลย เห็นได้ชัดว่ามีหลายปัจจัยในการเล่นที่นี่ดังนั้นขอ จำกัด การสนทนาเฉพาะIEnumerableผู้ให้บริการ LINQ-to-Objects ธรรมดา นอกจากนี้สมมติว่าสิ่งที่Funcส่งผ่านมาเป็นตัวเลือก / ตัวเปลี่ยน / ฯลฯ เป็นการดำเนินการ O (1) ราคาถูก ดูเหมือนว่าเห็นได้ชัดว่าทุกการดำเนินงานที่ผ่านเดียว ( Select, Where, Count, Take/Skip, Any/Allฯลฯ ) จะ O (n) เนื่องจากพวกเขาจะต้องเดินตามลำดับเมื่อ; แม้ว่าเรื่องนี้จะเป็นเรื่องขี้เกียจก็ตาม สิ่งต่าง ๆ มีความซับซ้อนมากขึ้นสำหรับการดำเนินการที่ซับซ้อนมากขึ้น ชุดเหมือนผู้ประกอบการ ( Union, Distinct, Exceptฯลฯ ) การทำงานโดยใช้GetHashCodeค่าเริ่มต้น (AFAIK) ดังนั้นจึงดูเหมือนว่าเหมาะสมที่จะถือว่าพวกเขากำลังใช้กัญชาตารางภายในทำให้การดำเนินงานเหล่า O (n) เช่นกันโดยทั่วไป สิ่งที่เกี่ยวกับเวอร์ชันที่ใช้IEqualityComparer? …