2012-01-04 21 views
38

Tôi có một nghi ngờ, cho dù nhập khẩu không sử dụng và các đối tượng không sử dụng trong mã Java tạo ra bất kỳ tác động hiệu suất?Không nhập khẩu và các đối tượng không có tác động hiệu suất

Giả sử một đối tượng được khởi tạo và không bao giờ được sử dụng, điều gì sẽ xảy ra? Và chi phí nhập khẩu chưa sử dụng là gì

+7

http://stackoverflow.com/questions/979057/any-reason-to-clean-up-unused-imports-in-java-other-than-reducing-clutter –

+0

Tại sao không sử dụng chức năng "Tổ chức nhập khẩu" của Eclipse ? –

+0

Hoặc tổ chức nhập khẩu trong IntelliJ hoặc NetBeans hoặc bất kỳ IDE phong nha. –

Trả lời

39

Câu hỏi rất phổ biến của nó. Giống như hầu hết các câu hỏi về hiệu suất, cách tốt nhất là viết mã rõ ràng và đơn giản nhất có thể vì điều này cải thiện khả năng bảo trì của mã và giúp đảm bảo nó hoạt động tốt ngay cả sau khi nó được thay đổi. (Clever/Obtuse/mã không cần thiết Verbose có thể chạy nhanh để bắt đầu nhưng vì nó chỉ được thay đổi bởi những con người đơn thuần nó có thể chậm hơn nhiều)

Nhập khẩu chưa sử dụng có tác động nhỏ đến trình biên dịch, nhưng không có nhập khẩu trong byte mã hoặc khi chạy.

Các đối tượng không sử dụng có thể được tối ưu hóa, nhưng tốt nhất là tránh những thứ này vì chúng hầu như luôn gây ra tác động hiệu suất, nhưng quan trọng hơn là đọc và duy trì mã của bạn khó khăn hơn.

+1

Chúng tôi cũng có thể đề cập đến một vài CPU bổ sung trong quá trình biên dịch. Nhiều mã hơn - cần thêm thời gian để tối ưu hóa và biên dịch – disorder

+0

Cảm ơn bạn đã trả lời! Bạn có nguồn thông tin này mà tôi có thể tham khảo không? (khác với câu trả lời này ...) –

+1

@EduardoBezerra bạn có thể thấy từ đặc tả kỹ thuật trích dẫn byte không được sử dụng để chúng có thể có hiệu lực khi chạy. –

11

Nhập khẩu chưa sử dụng không có tác động hiệu suất khi chạy. Nó hoàn toàn là một cơ chế không gian tên. Tuy nhiên, bạn nên luôn luôn nhập khẩu chỉ những gì bạn cần cho khả năng đọc và tránh va chạm không gian tên là một mối phiền toái. Ngoài khả năng đọc mã và do đó có thể bảo trì mã, có thể biên dịch mã java nhanh hơn (tuy nhiên, không đáng kể) bằng cách dọn dẹp hàng nhập khẩu, nhưng hiệu năng thời gian chạy không bị ảnh hưởng, vì mã byte được tạo không bị ảnh hưởng bởi nhập khẩu lộn xộn. Mã byte được tạo vẫn giữ nguyên.

+1

Vui lòng cung cấp tham chiếu cho 'các mục nhập chưa sử dụng không có tác động hiệu suất ' – RanRag

+1

Để chính xác hơn, không có tác động hiệu suất tại RUNTIME. Tuy nhiên, tùy thuộc vào số lượng nhập khẩu, COMPILATION có thể chậm hơn tuy nhiên không đáng kể. – Frankline

+0

Tại sao không đáng chú ý? Chắc chắn điều đó phụ thuộc vào số lượng biên dịch bạn đang làm? Ví dụ - chúng ta có một máy chủ xây dựng CI đang liên tục biên dịch nhiều dự án - do đó ngay cả việc tối ưu hóa nhỏ nhất cũng sẽ làm tăng hiệu năng biên dịch một chút, đúng không? – ryan

3

Trong khi tác động trong quá trình biên dịch là tối thiểu, tác động trong việc triển khai có thể xấu, tôi đã gặp phải một nhập không sử dụng yêu cầu một thư viện riêng biệt trở thành phụ thuộc của maven, một vấn đề phụ thuộc quá mức không được tìm thấy. chiến tranh là dày hơn không có lý do, thêm vào đó một lọ không cần thiết trong bộ nạp lớp webapp.

Các vấn đề liên quan