How is performance affected by an unused using dir

2019-01-04 11:52发布

Visual Studio will automatically create using statements for you whenever you create a new page or project. Some of these you will never use.

Visual Studio has the useful feature to "remove unused usings".

I wonder if there is any negative effect on program performance if the using statements which are never accessed, remain mentioned at the top of the file.

6条回答
贼婆χ
2楼-- · 2019-01-04 12:00

An unused using has no impact to the runtime performance of your application.

It can affect the performance of the IDE and the overall compilation phase. The reason why is that it creates an additional namespace in which name resolution must occur. However these tend to be minor and shouldn't have a noticeable impact on your IDE experience for most scenarios.

It can also affect the performance of evaluating expressions in the debugger for the same reasons.

查看更多
Bombasti
3楼-- · 2019-01-04 12:03

The following link A good read on why to remove unused references explains how it be useful to remove unused references from the application.

Below are the some excerpts from the link:

  1. By removing any unused references in your application, you are preventing the CLR from loading the unused referenced modules at runtime. Which means that you will reduce the startup time of your application, because it takes time to load each module and avoids having the compiler load metadata that will never be used. You may find that depending on the size of each library, your startup time is noticeably reduced. This isn't to say that your application will be faster once loaded, but it can be pretty handy to know that your startup time might get reduced.

  2. Another benefit of removing any unused references is that you will reduce the risk of conflicts with namespaces. For example, if you have both System.Drawing and System.Web.UI.WebControls referenced, you might find that you get conflicts when trying to reference the Image class. If you have using directives in your class that match these references, the compiler can't tell which of the ones to use. If you regularly use autocomplete when developing, removing unused namespaces will reduce the number of autocompletion values in your text editor as you type.

查看更多
Fickle 薄情
4楼-- · 2019-01-04 12:08

Code that does not execute does not affect the performance of a program.

查看更多
地球回转人心会变
5楼-- · 2019-01-04 12:11

No effect on execution speed, but there may be some slight effect on compilation speed/intellisense as there are more potential namespaces to search for the proper class. I wouldn't worry too much about it, but you can use the Organize Usings menu item to remove and sort the using statements.

查看更多
时光不老,我们不散
6楼-- · 2019-01-04 12:12

No, it's just a compile-time/coding style thing. .NET binaries use fully qualified names under the hood.

查看更多
冷血范
7楼-- · 2019-01-04 12:22

No, there are several process involved when compiling a program. When the compiler start looking for references (classes, methods) it will use only the ones used on the code. The using directive only tells the compiler where to look. A lot of unused using statement could maybe have a performance issue but just at compile time. At runtime, all the outside code is properly linked or included as part of the binary.

查看更多
登录 后发表回答