Yazılım Performans Optimizasyonu

“The First Rule of Program Optimization: Don’t do it.
The Second Rule of Program Optimization (for experts only!) : Don’t do it yet.”

Michael A. Jackson

Benim fikrimi büyük ölçüde ifade eden  kod optimizasyonu hakkında en çok hoşuma giden sözlerden biri.  Optimizasyon derken programı daha hızlı,performanslı çalıştırmak için yapılanlar kast ediliyor genelde. Gerçekten yazılımı kompleksleştirme açısından üzerimize yok ayrıca bu kompleksliğin dışında birde yazılımı geliştirirken ilk olarak performansı düşünüp iyice kodu karmaşıklaştırdığımız zaman kod içinden çıkılmaz bir hal alıyor ve ardından performans bu tarz değişiklikleri kolaylıkla yapamadığımız için yerlerde sürünüyor.

Bugünlerde üzerinde çalıştığım modülde eski bir kod üzerinde refactoring yapıyorum. Eski kod ilk yazıldığında kod esnekliği, okunabilirlik, test, tasarım yerine ağır olarak performans kaygıları gözetilerek yazılmış. Aşırı olarak Thread kullanılıyor. Yani aklınıza gelebilecek her işlem bir sınıfda ve bu sınıfların hepsi Thread sınıfından türemiş. Tabi kod kalitesi açısından kötü olduğu için performans iyileştirmesi yapılabilecek birçok yeri göremiyorsunuz. Özellikle herşeyin Thread olması avantaj gibi gözüksede aşırı Thread kullanımu CPU için ciddi performans düşüşüne yol açıyor.

Bu kod için yavaş yavaş unit testleri hazırlayıp refactoring yapınca birçok performans açısından büyük kazanç sağlayacak şey ortaya çıktı, Thread kullanımı oldukça azaldı, birçok gereksiz nesneden ,alandan kurtuldu  ve birçoğu daha çıkacağa benziyor.

Performans optimizasyonu çoğu zaman kodu karmaşıklaştırır. Yukarıdaki gibi performans için yazılımın ilk başında bu tür kaygılara düşerek kodu karmaşıklaştırmak benim yaşadığım gibi sizin için yönetilmesi zor oldukça karmaşık bir yazılım ortaya çıkaracaktır. Bu yüzden öncelikli hedefin okunabilir ,test edilmiş,esnek bir yazılım geliştirmek olması gerekir ardından çalışan yazılım performans problemi yaşıyorsa bu tarz optimizasyonları yapmak çok daha kolay ve verimli olacaktır.

Daha mutlu, rahat, zevkli,hızlı,kaliteli, performanslı, yazılımlar için daha önceden tekrarladığımız gibi hep bir ağızdan tekrarlıyoruz.

"Clean Code that Works".