Kullanılmayan bir kullanım yönergesi performansı nasıl etkiler?


110

Visual Studio, yeni bir sayfa veya proje oluşturduğunuzda sizin için otomatik olarak ifadeler oluşturur. Bunlardan bazılarını asla kullanmayacaksınız.

Visual Studio, "kullanılmayan kullanımları kaldırmak" için yararlı bir özelliğe sahiptir.

Hiç erişilemeyen kullanım ifadeleri dosyanın en üstünde belirtilmiş olarak kalırsa, program performansı üzerinde herhangi bir olumsuz etkisi olup olmadığını merak ediyorum.


Sormadan önce aradım ve görünmedi.
KdgDev

6
FWIW, bu gönderi daha iyi SEO'ya sahip: Google'da benim için ilk sonuç buydu. Bağlantılı 2 orijinalden biri mevcut değil (kaldırılmış) ve diğeri, yeniden yönlendirme olarak bile olsa, bu gönderiye bir değer katacak kadar farklı bir şekilde ifade ediliyor.
DaveD

Google tam tercihlerinizi ve arama geçmişinizi bildiği için sizin için önce @DaveD. Arkadaşımın bilgisayarında ilk değildi.
ilias iliadis

Yanıtlar:


133

Kullanılmayan bir kullanım, uygulamanızın çalışma zamanı performansı üzerinde hiçbir etkiye sahip değildir.

IDE'nin performansını ve genel derleme aşamasını etkileyebilir. Bunun nedeni, ad çözümlemesinin gerçekleşmesi gereken ek bir ad alanı oluşturmasıdır. Bununla birlikte, bunlar küçük olma eğilimindedir ve çoğu senaryo için IDE deneyiminiz üzerinde gözle görülür bir etkisi olmamalıdır.

Aynı nedenlerle hata ayıklayıcıdaki ifadeleri değerlendirme performansını da etkileyebilir.


39
Ne kadar çok kullanım olursa, Intellisense o kadar yavaş olacak
Riegardt Steyn

14

Hayır, bu sadece derleme zamanı / kodlama tarzı bir şey. .NET ikili dosyaları, başlık altında tam nitelikli adlar kullanır.


3
Bu, daha uzun sınıf ve yöntem adlarının JIT derleme süreleri üzerinde küçük ama gerçek (ölçülemezse) bir etkisi olduğu anlamına mı geliyor?
Jared Updike

8

Yürütme hızı üzerinde bir etkisi yoktur, ancak uygun sınıfı aramak için daha fazla potansiyel ad alanı olduğundan, derleme hızı / intellisense üzerinde küçük bir etkisi olabilir. Bu konuda çok fazla endişelenmem, ancak kullanım ifadelerini kaldırmak ve sıralamak için Kullanımları Düzenle menü öğesini kullanabilirsiniz.


8

Aşağıdaki bağlantı Kullanılmayan referansların neden kaldırılacağına dair iyi bir okuma, kullanılmayan referansların uygulamadan kaldırılmasının ne kadar yararlı olacağını açıklar.

Bağlantıdan bazı alıntılar aşağıdadır:

  1. Uygulamanızda kullanılmayan referansları kaldırarak CLR, çalışma zamanında kullanılmayan referanslı modülleri yüklemesini engellemiş olursunuz . Bu, uygulamanızın başlama süresini azaltacağınız anlamına gelir, çünkü her modülü yüklemek zaman alır ve hiçbir zaman kullanılmayacak derleyici yük meta verilerine sahip olmaktan kaçınır. Her kitaplığın boyutuna bağlı olarak, başlangıç ​​sürenizin önemli ölçüde azaldığını görebilirsiniz. Bu, uygulamanızın yüklendiğinde daha hızlı olacağı anlamına gelmez, ancak başlangıç ​​sürenizin kısalacağını bilmek oldukça kullanışlı olabilir.

  2. Kullanılmayan referansları kaldırmanın bir başka yararı, ad alanlarıyla çakışma riskini azaltmanızdır. Örneğin, her ikisine de sahipseniz System.Drawingve System.Web.UI.WebControlsreferans verdiyseniz , Imagesınıfa başvurmaya çalışırken çatışmalar yaşadığınızı fark edebilirsiniz . Sınıfınızda bu referanslarla eşleşen yönergeleriniz varsa, derleyici hangisinin kullanılacağını söyleyemez. Geliştirme sırasında düzenli olarak otomatik tamamlamayı kullanıyorsanız, kullanılmayan ad alanlarının kaldırılması, siz yazarken metin düzenleyicinizdeki otomatik tamamlama değerlerinin sayısını azaltacaktır.


5

Hayır, bir programı derlerken dahil olan birkaç işlem vardır. Derleyici referansları (sınıflar, yöntemler) aramaya başladığında, yalnızca kodda kullanılanları kullanacaktır. Using yönergesi yalnızca derleyiciye nereye bakması gerektiğini söyler. Kullanılmayan birçok ifade bir performans sorununa sahip olabilir, ancak sadece derleme zamanında. Çalışma zamanında, tüm dış kodlar düzgün bir şekilde bağlanır veya ikilinin bir parçası olarak dahil edilir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.