Nesne Havuzu ile Performansı Geliştirme

Nesne havuzu belirli durumlarda son derece etkili olabilir ve bu da performansta önemli artışlar sağlar. Nesneleri en iyi şekilde yeniden kullanmanın genel fikri, mümkün olduğunca çok kaynağı bir araya getirmek, yapılan fiili çalışmadan başlatmayı ayırmak ve ardından dağıtım zamanında havuzun özelliklerini gerçek donanıma yönetimsel olarak uyarlamaktır. Yani, aşağıdaki adımlara göre devam etmelisiniz:

  1. Nesneyi, herhangi bir istemci için yapılan pahalı başlatma ve kaynak edimini, istemci adına gerçek iş yapmanın ön koşulu olarak yapılacağını göz önünde bulundurarak yazın. Ağır nesne oluşturucularını yazın, böylece bu kaynaklar nesne tarafından tutulur ve kullanıcılar havuzdan bir nesne aldığında hemen kullanıma hazır olur.
  2. Kullanılabilir donanım kaynaklarında en iyi dengeyi elde etmek için havuzu yönetimsel olarak yapılandırın, genellikle daha hızlı istemci erişimi ve nesnelerin kullanımı karşılığında belirli boyutta bir havuzu korumaya ayrılmış belleği takas edin. Belirli bir noktada, havuzlama azalan getiriler elde eder ve olası kaynak kullanımını belirli bir bileşenle sınırlandırırken yeterince iyi bir performans elde edebilirsiniz.

Fiili Çalışma Yapma veya Kaynakları Alma

İstemcilerin kısa ve hızlı bir şekilde kullanacağı, nesne kullanım süresinin önemli bir kısmının kaynak almak veya istemci için belirli bir çalışma yapmadan önce başlatılması için harcandığı bir bileşeniniz varsa, büyük olasılıkla bileşeninizi nesne havuzu kullanmak üzere yazmak sizin için büyük bir kazanç olacaktır.

Bileşeni, nesnenin oluşturucusunda, tüm istemciler için mümkün olduğunca tekdüzen olan, bir veya birden çok bağlantı elde etmek, betikleri çalıştırmak, dosyalardan veya bir ağ üzerinden başlatma verilerini getirmek gibi zaman alan işlerin çoğunu gerçekleştirecek şekilde yazabilirsiniz. Bu, bu tür kaynakların hepsini bir araya getirme etkisine sahiptir. Bazı işleri gerçekleştirmek için gereken kaynaklar ve genel durumun birleşimini bir araya getiriyorsunuz.

Bu durumda, istemciler havuzdan bir nesne aldıklarında, bu kaynaklar hemen kullanılabilir duruma gelir. Genellikle, verileri göndererek veya çekerek küçük bir iş birimi yapmak için nesneyi kullanırlar ve sonra nesne IObjectContext::SetComplete veya IObjectContext::SetAbort ve geri döner. Böyle hızlı kullanım desenleriyle, havuzlama mükemmel performans avantajları sağlar. Durum bilgisi olmayan otomatik işlem programlama modelinin basitliğinden tam olarak yararlanabilir, ancak geleneksel durum bilgisi olan bileşenlerle aynı performansa ulaşabilirsiniz.

Ancak istemciler nesneyi her çağırdıkları zaman uzun süre kullanırsa havuz oluşturma daha az mantıklı olur. Kullanım süresi başlatma süresine göre arttıkça elde ettiğiniz hız avantajı marjinaldir. Etkin nesne havuzunu tutmak için gereken belleğin maliyetini gerekçelendirmeyen azalan geri dönüşler elde edersiniz.

Maliyeti Birden Çok İstemci Arasında Paylaşma

Başlatmayı çarpanlara ayırmanın bir çeşitlemesi, pahalı kaynaklar elde etme maliyetini istatistiksel olarak amorti etmek için havuz oluşturmayı kullanabilmenizdir. Alma veya başlatma isabetini bir kez alır ve sonra nesneyi yeniden kullanırsanız, bu maliyeti yaşam süresi boyunca nesneyi kullanan tüm istemciler arasında paylaşırsınız. Nesne başına yalnızca bir kez ağır inşaat süresi tahakkuk ettirilir.

Nesneleri Önceden Ayırma

tr-TR: Sıfır olmayan bir minimum havuz boyutu belirtirseniz, uygulama başlatıldığında bu minimum nesne sayısı oluşturulur ve havuza alınır, uygulamaya çağrı yapan istemciler için hazır hale getirilir.

Havuz Yönetimi ile Kaynak Kullanımını Yönetme

Kaynakları tam olarak nasıl kullanacağınızı yönetmek için en büyük havuz boyutunu kullanabilirsiniz. Örneğin, belirli sayıda veritabanı bağlantısı lisansınız varsa, istediğiniz zaman kaç bağlantı açtığınızı denetleyebilirsiniz.

İstemci kullanım desenlerini, nesne kullanım özelliklerini ve bellek ve bağlantılar gibi fiziksel kaynakları dikkate aldığınızda, performans ayarlaması yaparken büyük olasılıkla en uygun denge noktasını bulabilirsiniz. Nesnelerin biriktirilmesi, belirli bir noktadan sonra azalan kazançlar sağlar. Hangi performans düzeyine ihtiyacınız olduğunu belirleyebilir ve bunu elde etmek için gereken kaynaklara göre dengeleyebilirsiniz.

Nesne havuzunu yapılandırırken performans ayarlamasını kolaylaştırmak için, bir uygulamadaki bileşenler için nesne istatistiklerini izleyebilirsiniz. Ayrıntılar için bkz. İzleme Nesnesi İstatistikleri.

JIT-Activated Bileşenlerinin Performansını Geliştirme

Nesne havuzlama, COM+ tam zamanında etkinleştirme hizmetiyle çok iyi çalışır. JIT ile etkinleştirilen nesneleri havuza alarak nesne yeniden etkinleştirmeyi hızlandırabilirsiniz. Yeniden etkinleştirme maliyetini azaltırken JIT etkinleştirmesi ile kanalı açık tutmanın avantajlarını elde edersiniz. Bu durumda, referansları aktif olan nesnelere ne kadar bellek ayırmak istediğinizi yönetmek için havuzlamayı kullanabilirsiniz.

İşlem sırasında JIT ile etkinleştirilmiş bileşenleri havuza alma olasılığınız yüksektir. Nesne havuzu, işlem bileşenlerini işlemek için iyileştirilmiştir. Daha fazla bilgi için bkz. İşlem Nesnelerini Havuza Alma.

COM+ Nesne Oluşturucu Dizeleri

Nesne Ömrünü ve Durumunu Kontrol Etme

nesne havuzu oluşturmanın nasıl çalıştığını

İşlemsel Nesneleri Havuzlama

Havuza Eklenebilir Nesneler için Gereksinimleri