"Erken optimizasyon tüm kötülüklerin köküdür" neredeyse hepimizin duyduğu / okuduğu bir şeydir
Doğru. Maalesef, aynı zamanda, tüm zamanların en kötü (kötüye kullanılan) programlama alıntılarından biridir. Donald Knuth, memeyi kullandığından beri, alıntıdan bazı orijinal bağlamlar eklemeye değer:
Küçük etkinlikleri unutmalıyız, zamanın% 97'sini söyleyelim: erken optimizasyon tüm kötülüklerin kaynağıdır. Yine de bu kritik% 3'teki fırsatlarımızı kaçırmamalıyız. ... İyi bir programcı ... kritik koda dikkatlice bakmak akıllıca olacaktır; ancak bu kod tanımlandıktan sonra. ... ölçme araçlarını kullanan programcıların evrensel deneyimi, sezgisel tahminlerinin başarısız olmasıydı.
Knuth'un özellikle çalışma zamanında yürütme hızından bahsettiğini unutmayın .
..Programcılar , programlarının kritik olmayan kısımlarının hızını düşünerek veya endişelendirip çok fazla zaman harcarlar .
Ayrıca, 1974'te, yürütme hızı ile programın sürdürülebilirliği (daha yüksek hız - daha az bakım gerektirmeyen) arasında birinci sınıf ve negatif korelasyon bulunan herhangi bir makine kaynağının muhtemelen şimdi daha güçlü olduğu makaleyi yazdı.
Tamam, sorunuza cevap vermek için, Donald Knuth'a göre, tanımlanmış olan ciddi bir performans darboğazını düzeltirse (en iyisi ölçülür ve tespit edilir) optimizasyon erken değildir .
Daha önce de söylediğim gibi, "erken optimizasyon" en kötü şekilde kötüye kullanılan memlerden biridir, bu nedenle erken erken optimizasyon olmayan, bazen de bunlardan vazgeçilen bazı örnekler olmadan cevap tamamlanmayacaktır:
- Çıplak gözle görülebilen ve O (N) 2 gibi büyük N'li veri tabanına gidiş dönüş sayısı gibi tanıtılmadan önce önlenebilecek darboğazlar;
Dahası, çalışma zamanı yürütme hızıyla ilgili değil: