Hiệu suất bị ảnh hưởng như thế nào bởi chỉ thị sử dụng không sử dụng?


110

Visual Studio sẽ tự động tạo bằng cách sử dụng các câu lệnh cho bạn bất cứ khi nào bạn tạo một trang hoặc dự án mới. Một số trong số này bạn sẽ không bao giờ sử dụng.

Visual Studio có tính năng hữu ích để "loại bỏ những thứ không sử dụng".

Tôi tự hỏi liệu có bất kỳ ảnh hưởng tiêu cực nào đến hiệu suất chương trình không nếu các câu lệnh using không bao giờ được truy cập, vẫn được đề cập ở đầu tệp.


Tôi đã tìm kiếm nó trước khi hỏi và nó không hiển thị.
KdgDev

6
FWIW, bài đăng này có SEO tốt hơn: đó là kết quả đầu tiên trên Google đối với tôi. Trong số 2 bản gốc được liên kết, một bản không có sẵn (đã bị xóa) và bản còn lại được viết khác nhau đủ để thêm một số giá trị cho bài đăng này, ngay cả khi chỉ là chuyển hướng.
DaveD

@DaveD đầu tiên dành cho bạn vì Google biết chính xác các tùy chọn và lịch sử tìm kiếm của bạn. Trong máy tính của bạn tôi không phải là người đầu tiên.
ilias iliadis

Câu trả lời:


133

Việc sử dụng không sử dụng không ảnh hưởng đến hiệu suất thời gian chạy của ứng dụng của bạn.

Nó có thể ảnh hưởng đến hiệu suất của IDE và giai đoạn biên dịch tổng thể. Lý do tại sao là nó tạo ra một không gian tên bổ sung trong đó việc phân giải tên phải xảy ra. Tuy nhiên, những điều này có xu hướng nhỏ và không có tác động đáng chú ý đến trải nghiệm IDE của bạn trong hầu hết các trường hợp.

Nó cũng có thể ảnh hưởng đến hiệu suất đánh giá các biểu thức trong trình gỡ lỗi vì những lý do tương tự.


38
Các usings hơn có, Intellisense chậm sẽ
Riegardt Steyn

14

Không, nó chỉ là một thứ theo phong cách thời gian biên dịch / mã hóa. Các tệp nhị phân .NET sử dụng tên đầy đủ đủ điều kiện.


3
Điều này có nghĩa là các tên lớp và phương thức dài hơn có tác động nhỏ nhưng thực tế (nếu không thể đo lường được) đối với thời gian biên dịch JIT?
Jared Updike

8

Không ảnh hưởng đến tốc độ thực thi, nhưng có thể có một số ảnh hưởng nhỏ đến tốc độ biên dịch / intellisense vì có nhiều không gian tên tiềm năng hơn để tìm kiếm lớp thích hợp. Tôi sẽ không lo lắng quá nhiều về điều đó, nhưng bạn có thể sử dụng mục menu Tổ chức Sử dụng để loại bỏ và sắp xếp các câu lệnh using.


8

Liên kết sau Bài đọc hay về lý do xóa các tham chiếu không sử dụng giải thích cách hữu ích khi xóa các tham chiếu không sử dụng khỏi ứng dụng.

Dưới đây là một số đoạn trích từ liên kết:

  1. Bằng cách loại bỏ bất kỳ tham chiếu không sử dụng nào trong ứng dụng của bạn, bạn đang ngăn việc CLRtải các mô-đun được tham chiếu không sử dụng trong thời gian chạy. Điều đó có nghĩa là bạn sẽ giảm thời gian khởi động ứng dụng của mình, vì cần thời gian để tải từng mô-đun và tránh việc siêu dữ liệu tải trình biên dịch sẽ không bao giờ được sử dụng. Bạn có thể thấy rằng tùy thuộc vào kích thước của từng thư viện, thời gian khởi động của bạn giảm đi đáng kể. Điều này không có nghĩa là ứng dụng của bạn sẽ nhanh hơn sau khi tải, nhưng có thể khá hữu ích khi biết rằng thời gian khởi động của bạn có thể bị giảm xuống.

  2. Một lợi ích khác của việc loại bỏ bất kỳ tham chiếu không sử dụng nào là bạn sẽ giảm nguy cơ xung đột với không gian tên. Ví dụ: nếu bạn có cả hai System.Drawingvà được System.Web.UI.WebControlstham chiếu, bạn có thể thấy rằng bạn nhận được xung đột khi cố gắng tham chiếu Imagelớp. Nếu bạn đang sử dụng các chỉ thị trong lớp của mình phù hợp với các tham chiếu này, trình biên dịch không thể cho biết cái nào sẽ sử dụng. Nếu bạn thường xuyên sử dụng tính năng tự động hoàn thành khi phát triển, việc xóa các không gian tên không sử dụng sẽ làm giảm số lượng giá trị tự động hoàn thành trong trình soạn thảo văn bản khi bạn nhập.


5

Không, có một số quá trình liên quan khi biên dịch một chương trình. Khi trình biên dịch bắt đầu tìm kiếm các tham chiếu (các lớp, các phương thức), nó sẽ chỉ sử dụng các tham chiếu được sử dụng trên mã. Chỉ thị using chỉ cho trình biên dịch biết nơi cần tìm. Rất nhiều câu lệnh using không được sử dụng có thể có vấn đề về hiệu suất nhưng chỉ tại thời gian biên dịch. Trong thời gian chạy, tất cả mã bên ngoài được liên kết đúng cách hoặc được bao gồm như một phần của hệ nhị phân.


5

Mã không thực thi không ảnh hưởng đến hiệu suất của chương trình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.