"การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วร้ายทั้งหมด" เป็นสิ่งที่เราเกือบทุกคนเคยได้ยิน / อ่าน
จริง โชคไม่ดีที่มันเป็นหนึ่งในคำพูดการเขียนโปรแกรมที่ใช้ผิดวัตถุประสงค์มากที่สุดตลอดกาล เนื่องจาก Donald Knuth ประกาศเกียรติคุณให้แก่ meme จึงควรเพิ่มบริบทดั้งเดิมบางอย่างจากการอ้างอิง:
เราควรลืมเกี่ยวกับประสิทธิภาพเล็กน้อยพูดถึง 97% ของเวลา: การเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นรากฐานของความชั่วร้ายทั้งหมด แต่เราไม่ควรพลาดโอกาสที่สำคัญ 3% ... โปรแกรมเมอร์ที่ดี ... จะฉลาดที่จะดูโค้ดที่สำคัญอย่างละเอียด แต่หลังจากได้รับการระบุรหัสแล้ว ... ประสบการณ์สากลของโปรแกรมเมอร์ที่ใช้เครื่องมือวัดได้ว่าการคาดเดาที่ใช้งานง่ายของพวกเขาล้มเหลว
โปรดทราบว่า Knuth พูดคุยเกี่ยวกับความเร็วของการดำเนินการในรันไทม์โดยเฉพาะ
.. โปรแกรมเมอร์เขียนโปรแกรมใช้เวลาคิดมากหรือกังวลเกี่ยวกับความเร็วของส่วนที่ไม่สำคัญของโปรแกรม
นอกจากนี้เขาเขียนบทความในปี 1974 เมื่อทรัพยากรเครื่องใด ๆ ที่ระดับพรีเมี่ยมและความสัมพันธ์เชิงลบระหว่างความเร็วของการดำเนินการและการบำรุงรักษาของโปรแกรม (ความเร็วสูง - บำรุงรักษาน้อยกว่า) อาจแข็งแกร่งกว่าตอนนี้
ตกลงเพื่อตอบคำถามของคุณตาม Donald Knuth การปรับให้เหมาะสมไม่ใช่สิ่งที่กำหนดไว้ล่วงหน้าหากแก้ไขปัญหาคอขวดของประสิทธิภาพที่ระบุไว้ (วัดและระบุตำแหน่งในระหว่างการทำโปรไฟล์)
ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ "การเพิ่มประสิทธิภาพก่อนวัยอันควร" เป็นหนึ่งในมส์ที่มีการใช้ผิดวัตถุประสงค์ที่อันตรายที่สุดดังนั้นคำตอบจะไม่สมบูรณ์หากไม่มีตัวอย่างบางอย่างที่ไม่ใช่การเพิ่มประสิทธิภาพก่อนเวลาอันควร
- คอขวดซึ่งสามารถมองเห็นได้ด้วยตาเปล่าและสามารถหลีกเลี่ยงได้ก่อนที่จะถูกนำมาใช้เช่นจำนวน O (N ^ 2) ของ roundtrips ไปยังฐานข้อมูลที่มี N ขนาดใหญ่ที่มีทางเลือก O (1) อยู่
สิ่งต่อไปนี้จะไม่เกี่ยวข้องกับความเร็วของการทำงานแบบรันไทม์: