5
เหตุใด [] จึงเร็วกว่ารายการ ()
ฉันเพิ่งเทียบความเร็วการประมวลผลของ[]และlist()และรู้สึกประหลาดใจที่พบว่า[]วิ่งเกินสามครั้งเร็วlist()กว่า ฉันทำการทดสอบเดียวกันด้วย{}และdict()ผลลัพธ์ก็เหมือนกันจริง: []และ{}ทั้งคู่ใช้เวลาประมาณ 0.128 วินาที / ล้านรอบในขณะที่list()และdict()ใช้เวลาประมาณ 0.428 วินาที / ล้านรอบ ทำไมนี้ ทำ[]และ{}(และอาจจะ()และ''ด้วย) ทันทีส่งกลับสำเนาของบางตัวอักษรหุ้นที่ว่างเปล่าในขณะที่ลูกน้องอย่างชัดเจนชื่อของพวกเขา ( list(), dict(), tuple(), str()) อย่างเต็มที่ไปเกี่ยวกับการสร้างวัตถุหรือไม่ว่าพวกเขาเป็นจริงมีองค์ประกอบ? ฉันไม่รู้ว่าทั้งสองวิธีต่างกันอย่างไร แต่ฉันชอบที่จะรู้ ฉันไม่พบคำตอบในเอกสารหรือบน SO และการค้นหาวงเล็บว่างเปล่ากลายเป็นปัญหามากกว่าที่ฉันคาดไว้ ฉันได้ผลลัพธ์ตามกำหนดเวลาโดยการโทรtimeit.timeit("[]")และtimeit.timeit("list()")และtimeit.timeit("{}")และtimeit.timeit("dict()")เพื่อเปรียบเทียบรายการและพจนานุกรมตามลำดับ ฉันใช้ Python 2.7.9 เมื่อเร็ว ๆ นี้ฉันค้นพบ " ทำไมถ้า True ช้ากว่าถ้า 1? " ที่เปรียบเทียบประสิทธิภาพของif Trueการif 1และดูเหมือนว่าจะได้สัมผัสกับสถานการณ์ตามตัวอักษรและทั่วโลกที่คล้ายกัน บางทีมันก็คุ้มค่าที่จะพิจารณาเช่นกัน