Yazılım Optimizasyon Adımları Nelerdir
Yazılımı, kullanıcıların hayatlarını kolaylaştırmak ve daha iyi çalışmalarını sağlamak için geliştirilmiştir. Yazılım geliştirirken yazılımın her detayını düşünmek ve ona göre şekillendirmek gerekir. Yazılım tasarımı ve işlevselliği önemliyken, güvenlik ve hız da önemlidir. Genel olarak yazılımın performansını arttırmanın yöntemlerinden bahsedeceğiz.
Yazılım optimizasyonu için uygulanabilir yöntemler
Yazılımı optimize ederken göz önünde bulundurulması gereken şeylerden biri, dosyadaki gerekli değişkenleri önbelleğe almaktır. Uygulamanın daha az RAM tüketmesi için disk sürekli olarak kullanılırsa, yazılım performansı ciddi şekilde düşer. RAM kullanmak performansı önemli ölçüde artırır. Bir yazılım geliştiricisiyseniz, kendiniz test edebilirsiniz. Küçük dosyaların gecikme süresinin düşük olması mümkündür, ancak dosya daha büyük olduğunda gecikme bir darbe alacaktır. Kısacası hızı artırmak için değişkenler RAM üzerinde tutulmalıdır. Yazılım yüklenirken RAM’de kalacak değişkenler zamanla kaydedilecek ve uygulama kapatıldığında kaydetme yapılacaktır.
Yazılım optimizasyonuyla ilgili başka bir şey de kısmi bir sistem kullanmaktır. Örneğin, bir dosyanın tamamını RAM’e taşımak, RAM kullanımını ciddi şekilde artırabilir. Örnek olarak Minecraft’ı alalım. Oyunda parça sistemi var. Bu sistem sayesinde sadece oyuncunun pozisyonu yüklenir. Yazılımda kullanılan veriler çok büyükse, onu parçalamak ve bir kısmını görüntülemek performansı önemli ölçüde artırabilir. Örneğin 10.000 kayıt varsa 100’ü görüntüleyebilir ve Devam düğmesi ekleyebilirsiniz. Her düğmeye basıldığında, 100’lük artışlar gerçekleştirilir.
Yazılımı optimize etmek için yapılması gereken önemli şeylerden biri koddur. Kod ne kadar dikkatli, iyi ve iyi yazılırsa, o kadar üretken olur. Bazı kodlar performansı düşürürken diğerleri önemli ölçüde artırır. Kod yazarken optimizasyona hakim olmak, bazı testler yapmak ve en iyisini kullanmak gerekir.
Kod Analizi ile Performansı Optimize Etme
Yazılım gerektiği gibi çalıştığında, işlevsel olmayan gereksinimlere odaklanılır. “Performans”ta bu, bahsettiğimiz işlevsel olmayan gereksinimlerden biridir. Yazılım performansının yüksek olması için yapılabilecekler proaktif ve reaktif aktiviteler olarak iki grupta toplanabilir.
Performans Testinde Proaktif ve Reaktif Yaklaşımlar
Reaktif yaklaşımında amaç, kodlanmış yazılımları uygun görüldüğünde (genellikle proje sonunda) test ederek mevcut performans hakkında fikir edinmektir.
Proaktif yaklaşımında, yazılım performansı kodlamanın başlangıcından itibaren ölçülür ve zaman kaybetmeden bilerek ihtiyaç duyulan iyileştirmeler yapılır.
Sektörün en iyi yazılım geliştiricilerinin çoğunun, teknik borcu mümkün olduğunca düşük tutmaya yönelik proaktif yaklaşımı desteklediğini tespit ettik. Bu durum hem performans hem de sürdürülebilirlik için geçerlidir. Başarılı yazılım üretiminin bir numaralı şartı, yazılım geliştirmenin ilk gününden itibaren kaliteye sahip olmak için gerekli adımları atmaktır.
Proaktif yaklaşımda kod analizi çok önemli bir yere sahiptir. Bu bağlamda kod analizi, statik ve dinamik kod analizi olarak ikiye ayrılabilir.
Dinamik kod analizi ile performansı artırma yöntemleri
Proaktif performans testi’ün temel faaliyetlerinden biri olan dinamik kod analizinden performansı artırmak için nasıl faydalanabileceğimizden biraz bahsedelim.
Code Profiling
Kısacası yürüttüğünüz kodda farklı ölçümler alarak CPU ve bellek kullanımını farklı seviyelerde analiz etmenizi sağlayan bir yöntemdir. Doğası gereği birçok alet/alet kullanımını gerektirir. Keytorc olarak uzun süredir projelerimizde kullandığımız araçlar için .Net platformu için aşağıdaki örnekleri sıralayabiliriz:
Visual Studio Performance Profiler
JetBrains dotTrace / dotMemory
ANTS Performance / Memory Profiler
Nprofiler
Mevcut projelerimizden birinde kullandığımız dotTrace benzer şekilde çalışan araçlardan biridir.
dotTrace
IntelliJ’in yaratıcısı JetBrains tarafından geliştirilmiş, çoğumuzun kullanmaktan mutlu olduğu çok kullanışlı bir araç. Aracın 14 günlük deneme sürümü boyunca, tamamen işlevsel ürünü deneyimleyebilir ve PoC’ler oluşturabilirsiniz.
Bazı önemli özelliklerini düşünürsek:
Kod çalışırken hangi kaynakların, ne kadar ve ne sıklıkta kullanıldığını analiz etme olanağı sağlar.
Ayrıca, Visual Studio ile bütünleşerek tüm işlemleri IDE’nizden ayrılmadan tek bir ekrandan gerçekleştirme olanağı sağlar.
Yerel veya uzak sunucu üzerinden çalışan farklı türdeki .Net uygulamalarına bağlanarak dinamik performans analizi yapmanızı sağlar. Uzaktan taramaya ek olarak, hedef sunucuda “Remote Tool” kurulu olmalıdır.
Farklı profil oluşturma yöntemlerini kullanarak kodunuzu beğeninize göre analiz etmenize yardımcı olabilir.
Herhangi bir zamanda anlık görüntü alabilir ve bir sonraki durumla karşılaştırmak için uygulamanızın mevcut durumunu kaydedebilir.
Teamcity for Continuous Integration kullanıyorsanız, eklentisi üzerinden performans incelemelerini otomatik olarak gerçekleştirerek regresyon etkilerinden dolayı oluşabilecek sorunları tespit ederek yayınlamayı durdurmanıza olanak tanır.