Kodu optimize etmeyin !
Okuyucu : 1.662
Günlük Okuyucu : 3
'Premature optimization is the root of all evil.'
Tony Hoare / Donald Knuth
OOP programlama ve .NET, Java gibi dillerin yaygınlaşması, encapsulation' ın her noktada kullanılması ile birlikte optimizasyon iyice geriye kaydı ve kaymalı.
Dört yıl kadar önce web tabanlı bir yazılım geliştirilirken ileri optimasyon tekniklerini inceliyordum, tekniklerin bazısı gerçekten çok basit şekilde yüksek kazançlar sağlarken (aynı .NET te büyük string operasyonlarında stringbuilder ı kullanmanın bariz farkı gibi) bazıları ise çok büyük uğraşlar sonucu çok küçük faydalar sağlıyordu.
Orta ölçekli potansiyeli beklenen bir site için ekstra 10 saat harcayıp, kodun kompleksitisini yükseltip sadece %01 gibi performans kazanmak yerine servera 256 RAM daha takmanın uygun olduğunu belirtmiştim, bugün de hala aynı şekilde düşünüyorum (tabii buradaki bir server yazılımı dolayısıyla donanım bizim kontrolümüzde).
Çok bariz bir şey var ki .NET, Java C' den genelde en az 10 kat yavaşlar bazen bu 50-100 kata kadar çıkabiliyor (yapılan araştırmalara göre ben burada çok atmışım, gözüken o ki .NET / Java genelde 3-10 kat yavaş gözüküyorlar. Java genelde .NET ten daha yavaş ve son olarak bir not normalde büyük uygulamalarda uygulama tipine göre bu yavaşlık biraz daha yükselebiliyor), dolayısıyla çok yüksek performans zaten bu dillerin birinci derdi değil, oyunun ilk turu sahaya çıkarken kaybedilmiş durumda.
İkinci tur, geliştirme optimizasyonu. Kod geliştirirken performans analiz ve plandan gelir. Taklacı güvercin taklidi yapabilen çılgın sort algoritmanızdan değil. Sizin o çılgın sort algoritmanız bir milyon kayıtta tamı tamına 1200 milisaniye, yani 1.2 hızlı çalışabilir ama maalesef bu program kullanıcısının sadece on binde birinin, bir milyondan fazla kaydı var ve olanlar da 1.2 saniye bekleyip daha iyi bir özelliğe veya daha stabil bir yazılıma hayır diyeceklerini sanmıyoruz. Bir diğer durumsa zaten programın kötü planlanmış akışı kullanıcıya performans açısından dakikalar kabettiriyor, memory' yi şekerle yumuşatılmış limonata hesabı içiyor olabilir.
Başa dönersek OOP geliştirme size büyük bir imkan veriyor fonksiyonlarınızda rutinlerinizde, classlarınızda encapsulation' ın hakkını verin ki gerektiği zaman daha güçlü ve daha efektif bir algoritma ile değiştirme şansınız olsun. Tabii ki bu tek getirisi değil iyi encapsulation sizi her zaman daha iyi bir yazılıma götürecektir.
Sonuç olarak yazılım geliştirirken optimizasyonu ikinci planda tutun, özellikle test-driven development desteği ile gereken yerleri daha sonradan optimize etmeniz çok daha kolay olacaktır. Rutinin nasıl çalışması gerektiğine odaklanın onu çalıştırın daha sonradan optimizasyon gelecektir.
Son bir hatırlatma bu yazıdan optimizasyon yapmayın sonucu çıkarmayın. Özellikle planlama aşamasında programın mantıklı olması ve performansı düşünmesi gereklidir. Eğer bir resmi bir klasörde dosyanın olup olmadığını kontrol ederken File.Exist() yerine klasördeki tüm dosyaları tarayıp string karşılaştırması yapıyorsanız buna zaten diyecek bir şeyimiz yok, o zaman daha ciddi sorunlarınız var demektir...

Yorumlar
Yorum Ekle
Kodu optimize etmeyin ! ile İlişkili Olabilecek Yazılar - Haberler
Tekerleği Yeniden KeşfetmeyinKorsan Yazılımsız İki Yıl
Pragmatic Programmer Notları
OSX' i Windows' a Benzetme
.NET ile Object Pool
Diğer Yazılar
Komplo Teorisi
Kompüter Zıt Nedir?
Konferans Notları
Konferans vs.
Konsoldan PC' ye Oyun Katliamı
Konu kısmına mesaj yazabilme
Konuya Gelelim WEP' i Kırma, Kablosuz Ağlara Saldırı & Defans - 3
Korsan Yazılımsız İki Yıl
Kötü Protesto Yöntemleri
Kredi Kartı Formları
Kredi Kartları Hakkında Ekstra Bilgiler
Ktap, Essential PHP Security
Küçük Ekranlarda Web Tasarımı
Küfür
Kullanıcıya saygı duymak
Kullanılabilir Web Siteleri
Kullanışlı Sözlük, Babylon
Kurban Bayramınız Mübarek, Yeni Yılınız Kutlu Olsun
Kurtlar İmparatorluğu, JC-Grange
Neredeyim ?
Ferruh.Mavituna » Haberler » Kodu optimize etmeyin !