
Yazılım optimizasyonu, teknolojide atılması gereken en onemli adımlardan biridir. Bu bağlamda optimizasyon adımlarından bahsedeceğiz.
Yazılımı, kullanıcıların hayatlarını kolaylaştırmak ve daha iyi calışmalarını sağlamak icin geliştirilmiştir. Yazılım geliştirirken yazılımın her detayını duşunmek ve ona gore şekillendirmek gerekir. Yazılım tasarımı ve işlevselliği onemliyken, guvenlik ve hız da onemlidir. Genel olarak yazılımın performansını arttırmanın yontemlerinden bahsedeceğiz.
Yazılım optimizasyonu icin uygulanabilir yontemler Yazılımı optimize ederken goz onunde bulundurulması gereken şeylerden biri, dosyadaki gerekli değişkenleri onbelleğe almaktır. Uygulamanın daha az RAM tuketmesi icin disk surekli olarak kullanılırsa, yazılım performansı ciddi şekilde duşer. RAM kullanmak performansı onemli olcude artırır. Bir yazılım geliştiricisiyseniz, kendiniz test edebilirsiniz. Kucuk dosyaların gecikme suresinin duşuk olması mumkundur, ancak dosya daha buyuk olduğunda gecikme bir darbe alacaktır. Kısacası hızı artırmak icin değişkenler RAM uzerinde tutulmalıdır. Yazılım yuklenirken 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. Orneğin, bir dosyanın tamamını RAM ’e taşımak, RAM kullanımını ciddi şekilde artırabilir. Ornek olarak Minecraft ’ı alalım. Oyunda parca sistemi var. Bu sistem sayesinde sadece oyuncunun pozisyonu yuklenir. Yazılımda kullanılan veriler cok buyukse, onu parcalamak ve bir kısmını goruntulemek performansı onemli olcude artırabilir. Orneğin 10.000 kayıt varsa 100 ’u goruntuleyebilir ve Devam duğmesi ekleyebilirsiniz. Her duğmeye basıldığında, 100 ’luk artışlar gercekleştirilir.
Yazılımı optimize etmek icin yapılması gereken onemli şeylerden biri koddur. Kod ne kadar dikkatli, iyi ve iyi yazılırsa, o kadar uretken olur. Bazı kodlar performansı duşururken diğerleri onemli olcude 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 calış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 yuksek olması icin yapılabilecekler proaktif ve reaktif aktiviteler olarak iki grupta toplanabilir.
Performans Testinde Proaktif ve Reaktif Yaklaşımlar Reaktif yaklaşımında amac, kodlanmış yazılımları uygun gorulduğunde (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 olculur ve zaman kaybetmeden bilerek ihtiyac duyulan iyileştirmeler yapılır.
Sektorun en iyi yazılım geliştiricilerinin coğunun, teknik borcu mumkun olduğunca duşuk tutmaya yonelik proaktif yaklaşımı desteklediğini tespit ettik. Bu durum hem performans hem de surdurulebilirlik icin gecerlidir. Başarılı yazılım uretiminin bir numaralı şartı, yazılım geliştirmenin ilk gununden itibaren kaliteye sahip olmak icin gerekli adımları atmaktır.
Proaktif yaklaşımda kod analizi cok onemli bir yere sahiptir. Bu bağlamda kod analizi, statik ve dinamik kod analizi olarak ikiye ayrılabilir.
Dinamik kod analizi ile performansı artırma yontemleri
Proaktif performans testi ’un temel faaliyetlerinden biri olan dinamik kod analizinden performansı artırmak icin nasıl faydalanabileceğimizden biraz bahsedelim.
Code Profiling Kısacası yuruttuğunuz kodda farklı olcumler alarak CPU ve bellek kullanımını farklı seviyelerde analiz etmenizi sağlayan bir yontemdir. Doğası gereği bircok alet/alet kullanımını gerektirir. Keytorc olarak uzun suredir projelerimizde kullandığımız araclar icin .Net platformu icin aşağıdaki ornekleri sıralayabiliriz:
Visual Studio Performance Profiler
JetBrains dotTrace / dotMemory
ANTS Performance / Memory Profiler
Nprofiler
Mevcut projelerimizden birinde kullandığımız dotTrace benzer şekilde calışan araclardan biridir.
dotTrace IntelliJ ’in yaratıcısı JetBrains tarafından geliştirilmiş, coğumuzun kullanmaktan mutlu olduğu cok kullanışlı bir arac. Aracın 14 gunluk deneme surumu boyunca, tamamen işlevsel urunu deneyimleyebilir ve PoC ’ler oluşturabilirsiniz.
Bazı onemli ozelliklerini duşunursek:
Kod calışırken hangi kaynakların, ne kadar ve ne sıklıkta kullanıldığını analiz etme olanağı sağlar.
Ayrıca, Visual Studio ile butunleşerek tum işlemleri IDE ’nizden ayrılmadan tek bir ekrandan gercekleştirme olanağı sağlar.
Yerel veya uzak sunucu uzerinden calışan farklı turdeki .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 yontemlerini kullanarak kodunuzu beğeninize gore analiz etmenize yardımcı olabilir.
Herhangi bir zamanda anlık goruntu alabilir ve bir sonraki durumla karşılaştırmak icin uygulamanızın mevcut durumunu kaydedebilir.
Teamcity for Continuous Integration kullanıyorsanız, eklentisi uzerinden performans incelemelerini otomatik olarak gercekleştirerek regresyon etkilerinden dolayı oluşabilecek sorunları tespit ederek yayınlamayı durdurmanıza olanak tanır.