Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

แนวทางปฏิบัติที่ดีสำหรับการใช้ลูปใน Python

นี่เป็นคำถามที่ไม่ขึ้นกับภาษา (language agnostic) ลูปมีในเกือบทุกภาษา และหลักการเดียวกันใช้ได้ทุกที่ คุณต้องเข้าใจว่า compiler ทำหน้าที่หนักส่วนใหญ่ในการเพิ่มประสิทธิภาพลูป แต่นักเขียนโปรแกรมก็ต้องดูแลให้ลูปของตนมีประสิทธิภาพด้วย

สำคัญคือ ต้องเข้าใจว่าทุกอย่างที่วางในลูปจะถูก execute ทุกรอบ การเพิ่มประสิทธิภาพลูปคือการลดสิ่งที่ลูปทำ แม้การดำเนินการที่ดูเร็วมาก ก็จะใช้เวลานานหากทำซ้ำหลายครั้ง การดำเนินการที่ใช้ 1 ไมโครวินาที ลบ 1 ล้านรอบ จะใช้เวลา 1 วินาที

อย่าเรียก len(list) ภายในลูป หรือในเงื่อนไขเริ่มต้นของลูป

ตัวอย่าง

a = [i for i in range(1000000)]
length = len(a)
for i in a:
    print(i - length)

เร็วกว่ามากเมื่อเทียบกับ

a = [i for i in range(1000000)]
for i in a:
    print(i - len(a))

คุณยังสามารถใช้เทคนิคเช่น Loop Unrolling ซึ่งเป็นเทคนิคการแปลงลูปที่พยายามเพิ่มความเร็วการรันโปรแกรม แลกกับขนาดไบนารีที่ใหญ่ขึ้น (space-time tradeoff)

การใช้ฟังก์ชันอย่าง map, filter แทน for loop แบบ explicit ก็ช่วยเพิ่มประสิทธิภาพได้บ้าง