Üzerinde çalıştığım bir proje, bazı küçük performans sorunlarından muzdarip. Ekibimiz performansta daha büyük kazanımlar elde etmek için çok sayıda küçük iyileştirme gerçekleştiriyor. Uygulamaya bazı bariz değişiklikler yaparak yardımcı olmayı başardık ve bazı ek iyileştirmeler sağlamak için veri bağlamaya baktık. Varsayılan bağlama modunun TwoWay olduğunu biliyorum, ancak çoğu bağımızın TwoWay bağlaması gerektirmiyor. Geçmek ve varsayılanı kabul ettiğimiz Mode'u OneWay olarak açıkça belirtmek için zamanımıza değer mi?WPF'de bağlamaları ayarlarken OneWay bağını açıkça belirtmek için bir performans avantajı var mı?
cevap
Üzgünüm, 1. sürüm% 100 yanlıştır (teşekkürler, @Jeffora). Onu burada saklıyorum, aksi takdirde yorumlar mantıklı değil.
Tek yönlü bir bağlamanın, değişiklik bildirimlerini dinlemek için kaynakla bir bağlantı kurması gerekmez, bu nedenle daha az bellek gerektirir, ancak hız söz konusu olduğunda, bir fark olduğunu düşünmüyorum .
2. sürüm: Hem OneWay hem de TwoWay bağlamaları, hedef özelliği güncelleştirmek için değişikliklerin kaynağına abone olur. Bu nedenle, performanstaki fark, güncelleme gerçekleştiğinde yazılımın geri kalan kısmına bağlı olarak, kaynak özelliğinin bir etkisi olabilecek bir güncelleştirmesidir.
Performans önemliyse ve senaryonuzun hedef güncellemelere ihtiyacı yoksa, OneTime ciltleme bir seçenek olabilir.
Sıcak noktaları bulmak için uygulamanızı belirleyip belirlemediğinizi sormak için bu düzeltmenin fırsatını değerlendiriyorum. 80/20 kuralı (veya olay 90/10) oldukça sıktır, yani harcanan zamanın çoğu için küçük bir miktar kod hesaplanır. Bunu bilmeden optimizasyon çabaları hiç kazanç sağlayamaz.
İlginç. Bu yüzden, yüzlerce bu tür bağlamanın kurulmasından bahsediyorsak, bu dinleme olaylarının kablolanmasının pencereyi oluşturduktan sonra cpu döngüsü oluşturduğunu düşünebiliriz. Yani bir hız ve hafıza vuruşu olabilir, doğru mu? – Kilhoffer
Doğru, Bu bağlantı kurulumu için gereken süreyi kısaltıyordum, ama binlerce kişiyle, onlar önemli olabilir. – Timores
Tek yönlü bir bağlanma, değişiklik bildirimi kaynağını dinlemeye devam ediyor - tek seferlik bir bağlantı yok. – jeffora
- 1. Oturum değişkenlerini şifrelemek için herhangi bir güvenlik avantajı var mı?
- 2. Scala için silme işleminin herhangi bir avantajı var mı?
- 3. PHP'de özellikleri açıkça belirtmek önemli midir?
- 4. Yöntem çağrılarındaki genel bağımsız değişkenleri açıkça belirtmek için Java sözdizimi
- 5. Clang/libclang Java bağlamaları var mı?
- 6. GC.disable'ın herhangi bir performans dezavantajı var mı?
- 7. Objective-C'deki işlevler üzerinde blokları kullanmanın bir avantajı var mı?
- 8. Mapper vs Implicit Operators kullanmanın bir avantajı var mı?
- 9. Tip sınıflarında tip kurucuların herhangi bir avantajı var mı? örneğin
- 10. Proje başına anahtar bağlamaları tanımlamanın bir yolu var mı?
- 11. HBase'de Thrift için herhangi bir performans kriteri var mı?
- 12. Xcode anahtar bağlamaları vermenin bir yolu var mı?
- 13. WinForms'ta OneWay bağlanıyor mu?
- 14. [Serializable] sınıfına eklendiğinde performans sonuçları var mı?
- 15. Herhangi bir komut satırı aracılığıyla openssl cert için basicConstraints belirtmek için zaten var mı?
- 16. Performans C# için değişken ad uzunluk maddesi var mı?
- 17. Bir nesnenin ToString'i açıkça uygulayıp uygulamadığını anlamak için bir yol var mı? #
- 18. Bir özelliğin "görünen adı" belirtmek için bir .NET özniteliği var mı?
- 19. Uzun CSS sınıfı isimlerinin performans üzerinde bir etkisi var mı?
- 20. LIMIT 1'de herhangi bir performans artışı var mı?
- 21. Nasıl bağımlılıkları belirtmek için
- 22. myCollection.Where (...) arasında bir performans farkı var mı? FirstOrDefault() ve myCollection.FirstOrDefault (...)
- 23. "VEYA" kullanarak SQL "IN" ifadesi arasında herhangi bir performans farkı var mı?
- 24. OneWay modunda veri bağlama neden kırılıyor?
- 25. Boş bir başlatıcı listesinde std :: min çağrılıyor (ve açıkça belirtmek tür) tanımlanmamış davranış?
- 26. Bir web hizmetinin doğrudan veritabanına (oracle) vurmak gibi bir avantajı var mı?
- 27. RabbitMQ'dan bir sıra bağını nasıl kaldırırsınız?
- 28. Performans: İstemci özelliklerinde bir satırı yorumlamak için daha iyi bir yol var mı?
- 29. Windows için Python SVN bağlamaları
- 30. PyCharm'a bir öznitelik örneğinin hangi sınıfta olduğunu açıkça belirtmenin bir yolu var mı?
Microsoft tarafından bu hataya göre bellek sızıntılarına neden olduğu kabul edilen bazı veri bağlama durumları vardır: http://support.microsoft.com/kb/938416 – jeffora