Skip to main content

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

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

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

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

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

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