Erken Eniyileme

Yazılım tasarımında erken eniyileme (prematüre optimizasyon) başarım kaygılarının, yazılımın tasarımını etkileyecek ölçüde göz önünde bulundurulmasıdır. Bu yaklaşım gereğinden çok uygulandığında, olabildiğince duru olmayan bir tasarıma; üstelik eniyileme uğraşı yüzünden kodun karmaşıklaşması ve yazılımcının eniyilemeye dalması, tümüyle yanlış bir koda bile yol açabilir.

Erken eniyilemenin karşıtı ardıl eniyilemedir. Bu yaklaşımda ise yazılımda başarım koşulu aranmadan, önce işlevselliği tasarlanır ve programlanır. Elde edilen yazılım yavaş da olsa gereksinimleri karşılayan bir durumda olur. Ardından, eniyileme işlemi yapılır ve yavaşlığa neden olduğu belirlenen noktalar, başarım kazanımı sağlanacak biçimde yeniden yazılır.

Donald Knuth gibi tanınmış bilgisayar bilimcileri (sonradan bir kısmını Tony Hoare'a atfetse de); bakımı yapılabilir yazılımlar geliştirmenin, eniyileme öncelikli bir yaklaşımdan daha yararlı olduğunu belirtmiştir. Kuth'a göre yazılımcılar, yazılımlarının yüksek önem taşımayan bölümlerinin hızını düşünerek ya da bu konuda kaygılanarak inanılmaz ölçüde zaman harcarlar ve bu verimlilik girişimleri, hata ayıklama ve bakım süreçleri göz önünde bulundurulduğunda gerçekten de büyük ölçüde olumsuz etkiler yaratır.

Bir yazısında Knuth, Küçük verimlileştirmelerin %97'sini unutmalıyız, erken eniyileme tüm kötülüklerin anasıdır diyebiliriz. Yine de bu önemli %3'lük dilimdeki olanaklarımızı kaçırmamalıyız, demiştir.

Aşamalı yapılan iyileştirmelerle, başarım sorunlarının elde bulunan işlevsel koda başvurularak bulunması; yalnızca sorunlu bölümlerin değiştirilmesiyle çözülen, anlaşılır yapısını koruyan, verimli bir kod elde edilmesi sağlanabilir.
 Kaynakça 

Kategori:Yazılım mühendisliği