ฉันใช้การทดลอง 3 แบบที่เกี่ยวข้องกับรายการ C ++ และเวกเตอร์
ผู้ที่มีเวกเตอร์พิสูจน์ได้ว่ามีประสิทธิภาพมากขึ้นแม้ว่าจะมีการแทรกอยู่ตรงกลางจำนวนมาก
ดังนั้นคำถาม: ในกรณีใดรายการที่มีเหตุผลมากกว่าเวคเตอร์?
หากเวกเตอร์ดูเหมือนจะมีประสิทธิภาพมากขึ้นในกรณีส่วนใหญ่และพิจารณาว่าสมาชิกของพวกเขาเหมือนกันแล้วจะมีข้อได้เปรียบอะไรที่เหลืออยู่สำหรับรายการ?
สร้างจำนวนเต็ม N และวางไว้ในคอนเทนเนอร์เพื่อให้คอนเทนเนอร์ยังคงเรียงลำดับ การแทรกได้รับการดำเนินการอย่างไร้เดียงสาโดยการอ่านองค์ประกอบทีละหนึ่งและแทรกใหม่ขวาก่อนที่จะมีขนาดใหญ่ขึ้นครั้งแรก
ด้วยรายการเวลาจะผ่านหลังคาเมื่อมิติเพิ่มขึ้นเมื่อเทียบกับเวกเตอร์แทรกจำนวนเต็ม N ที่ส่วนท้ายของคอนเทนเนอร์
สำหรับรายการและเวกเตอร์เวลาเพิ่มขึ้นตามลำดับความสำคัญเท่ากันแม้ว่ามันจะเร็วขึ้น 3 เท่าเมื่อใช้เวกเตอร์แทรกจำนวนเต็ม N ในคอนเทนเนอร์
เริ่มจับเวลา
เรียงลำดับคอนเทนเนอร์โดยใช้ list.sort สำหรับรายการและ std :: sort สำหรับเวกเตอร์ หยุดจับเวลา
อีกครั้งเวลาเพิ่มขึ้นตามลำดับความสำคัญเท่ากัน แต่มันจะเร็วขึ้นโดยเฉลี่ย 5 เท่าด้วยเวกเตอร์
ฉันอาจทำการทดสอบต่อไปและหาตัวอย่างสองสามข้อที่รายการจะพิสูจน์ได้ดีขึ้น
แต่ประสบการณ์ร่วมกันของพวกคุณที่อ่านข้อความนี้อาจให้คำตอบที่มีประสิทธิผลมากขึ้น
คุณอาจเจอสถานการณ์ที่รายการใช้งานได้สะดวกกว่าหรือทำได้ดีกว่า
list
อาจจะดีกว่าถ้าคุณลบจำนวนมากขององค์ประกอบ ฉันไม่เชื่อว่าvector
จะส่งหน่วยความจำกลับคืนสู่ระบบจนกว่าจะลบเวกเตอร์ทั้งหมด โปรดทราบว่าการทดสอบ # 1 ของคุณไม่ได้ทดสอบเวลาการแทรกเพียงอย่างเดียว เป็นการทดสอบที่รวมการค้นหาและการแทรกเข้าด้วยกัน มันคือการหาสถานที่ที่จะแทรกที่ซึ่งlist
ช้า เม็ดมีดจริงจะเร็วกว่าเวกเตอร์