Ana Performans Karşı-Örüntüleri. Bir performans problemi araştırırken, kusurunuzun hangi karşı-örüntüye en çok benzediğini kendinize sorun.
Gereksiz Başlatma: Daha büyük bir süreci başlatırken, sistem, zaten işlenmiş olan küçük bir sonucu tekrar işler. Birikmiş etkiler, ekstra CPU/RAM tüketimi ve/veya yavaşlamayı gerektirir; bunların hepsi önlenebilir. Küçük sonucu önbelleklemek ana panzehirdir.
Strateji/Algoritma Verimsizliği: Yanlış yapılandırılmış veya zayıf seçilmiş bir algoritma veya kodlama stratejisi performans sorunlarına neden olur. Bir strateji, bir kod tabanında kullanılan bir tekniktir ve bir algoritma, tek bir bileşeni uygulamak için kullanılan bir plandır.
Aşırı İşleme: Sistem gereksiz işler yapıyor. Bu işleri kaldırmak ölçülebilir performans faydası sağlar. Fazla veri almak ve çoğunun atılması, yanlış kaynak-yoğun kullanım durumunun yük testine dahil edilmesi gibi örnekler verilebilir.
Büyük İşleme Zorluğu: Büyük miktarda veriyi işlemeye ve fethetmeye çalışma. Böyle bir ihtiyacı olan çok az uygulama vardır, ancak mevcuttur. 4 milyar satır veriyi sorgulama, yavaş bir ağ üzerinden sürekli olarak 10MB veri transferi yapma vb.
Maalesef, bu ana karşı-örüntüler arasında örtüşme vardır, burada bir performans kusuru iki veya daha fazla farklı ana karşı-örüntüye uyabilir.
Bu anti-patronun tipik örnekleri şunlar olabilir:
XML şema dosyalarının (.xsd ve .xslt) her işlemde tekrar okunup ayrıştırılması, oysa bu tür dosyaların içeriği nadiren değişir.
Yetkilendirme, ürün, organizasyonel veri gibi sabit uygulama düzeyindeki verilerin sürekli olarak yeniden yüklenmesi.
Ağ bağlantılarının (TCP soketi gibi) veya veritabanı bağlantılarının her istekte yeniden oluşturulması.
Bu tür durumlar, performans problemlerine yol açabilir. Bunun yerine, veriler önbelleğe alınabilir veya yeniden kullanılabilir hale getirilebilir, böylece diskten veya ağ üzerinden gereksiz istekler en aza indirilir. Bu, uygulamanın genel performansını artıracaktır. İlgili kod örnekleri, yazarın GitHub reposunda bulunabilir.
Bu anti-patron, sıklıkla küçük I/O işlemlerinin yinelenmesi veya yanlış bir programlama dilinin kullanılmasıyla tanınabilir. "Gereksiz I/O işlemlerinden kaçınmak" klişe bir tavsiye olabilir, ancak bu durum, performans sorunlarının yaygın bir kaynağıdır. Bu nedenle, diske veya ağa yapılan gereksiz isteklerin en aza indirilmesine dikkat etmek önemlidir.