การเพิ่มประสิทธิภาพโปรแกรมคืออะไร

การปรับให้เหมาะสมของโปรแกรมคือกระบวนการปรับเปลี่ยนโปรแกรมคอมพิวเตอร์ในลักษณะที่ทำให้โปรแกรมทำงานได้เร็วขึ้นใช้ทรัพยากรน้อยลงหรือทำงานโดยทั่วไปด้วยประสิทธิภาพที่สูงขึ้น งานของการปรับให้เหมาะสมสามารถดำเนินการโดยอัตโนมัติโดยคอมไพเลอร์ภาษาการเขียนโปรแกรมบางอย่างจงใจโดยใช้โปรแกรมเพิ่มประสิทธิภาพหรือด้วยตนเองโดยโปรแกรมเมอร์ที่ก้าวผ่านซอร์สโค้ดและพยายามที่จะปรับปรุงเฉพาะ โดยทั่วไปการเพิ่มประสิทธิภาพของโปรแกรมจะดำเนินการโดยมีจุดสิ้นสุดเฉพาะในใจเนื่องจากมีการเพิ่มประสิทธิภาพทั่วไปน้อยมากที่สามารถทำกับโปรแกรมที่ไม่ได้ลดการปรับสถานะของส่วนอื่นของโปรแกรมให้ดีที่สุดซึ่งหมายความว่าโปรแกรมมักจะสามารถ ได้รับการปรับให้เหมาะกับความเร็วหรือการใช้ทรัพยากร แต่ไม่ใช่ทั้งสองอย่าง ปัญหาหนึ่งที่อาจเกิดขึ้นกับการเพิ่มประสิทธิภาพบางประเภทคือภาษาการเขียนโปรแกรมระดับสูงจำนวนมากให้สิ่งที่เป็นนามธรรมในระดับสูงระหว่างโค้ดเนทีฟและภาษาคอมพิวเตอร์ที่การปรับให้เหมาะสมอาจเป็นเรื่องยากหรือเป็นไปไม่ได้ แปลภาษาที่ใช้การคอมไพล์ just-in-time (JIT)

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

การเพิ่มประสิทธิภาพโปรแกรมประเภทต่าง ๆ สามารถทำได้ในขั้นตอนต่าง ๆ ของการพัฒนาโปรแกรม ในระหว่างการออกแบบการปรับให้เหมาะสมแบบกว้างสามารถทำได้โดยตรวจสอบให้แน่ใจว่าโปรแกรมทำงานได้อย่างมีประสิทธิภาพ เมื่อทำงานกับซอร์สโค้ดจริงการปรับให้เหมาะสมอาจรวมถึงการทำให้มั่นใจว่าไม่มีคำสั่งภายนอกการเรียกซ้ำหรือฟังก์ชันที่เขียนไม่ดี ที่การคอมไพล์การออปติไมซ์จำนวนมากจะดำเนินการโดยอัตโนมัติโดยคอมไพเลอร์และสามารถนำทางผ่านการใช้สวิตช์คอมไพเลอร์หรือคำสั่งต่าง ๆ โดยโปรแกรมเมอร์

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

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