2017-06-23 16 views
9

Việc khai báo các biến là cuối cùng bên trong một phương thức có mang lại lợi ích nào từ một quan điểm hiệu năng/bộ nhớ trong các phiên bản java mới nhất không?Khai báo các biến là phương thức bên trong cuối cùng và hiệu suất

Tôi không nói ở đây về bất kỳ lợi ích nào khác.

Câu hỏi này Does use of final keyword in Java improve the performance?được thêm gần 7 năm trước, một số tiến trình đã được thực hiện kể từ đó.

+2

Thú vị. Phản ứng ban đầu là để nói "tất nhiên là không, có một downvote". Nhưng điều này có chiều sâu: có trình biên dịch Java có đủ thông minh để làm cho tối ưu hóa dựa trên điều này? Có bất kỳ điều gì có thể được thực hiện? Có một upvote thay! (Tôi sẽ xem xét loại bỏ thẻ nhớ mặc dù, và thay thế hiệu suất). – Bathsheba

+3

bắt đầu từ Java SE 8, biến hoặc tham số có giá trị không bao giờ thay đổi sau khi được khởi tạo là hiệu quả cuối cùng, cũng JIT có thể thực hiện một số tối ưu với biến cuối cùng hoặc hiệu quả cuối cùng – xyz

+1

@Bathsheba đã làm như vậy – aurelius

Trả lời

3

Không, final từ khóa trên biến cục bộ không có tác động hiệu suất và thậm chí không thể có lý thuyết vì các tệp .class không lưu giữ thông tin này.

Xem this answer để biết chi tiết.

1

final từ khóa không có tác động hiệu suất trực tiếp nếu chúng ta nói về biến, nhưng có thể cải thiện hiệu suất trong một số trường hợp sử dụng.
Ví dụ:

  1. Khi lặp lại trong một vòng lặp, nếu biến là final sau đó JIT sẽ không kiểm tra bất kỳ nguyên nhân mà có thể thay đổi giá trị của danh sách (reference).
  2. final cho phép biến được gạch chân vào mã gọi để có thể gây ra một số bộ nhớ và cải thiện hiệu suất. Điều này được sử dụng khi bạn có một số chuỗi cuối cùng tĩnh công khai trong một lớp (reference).
  3. final từ khóa cải thiện hiệu suất. Không chỉ JVM có thể cache biến cuối cùng mà ứng dụng cũng có thể cache thường xuyên sử dụng biến cuối cùng (check here for 3 and 4).
  4. final từ khóa cho phép JVM tối ưu hóa phương thức, biến hoặc lớp.
+0

vui lòng cung cấp mã thông báo trong bài đăng của bạn và bạn sẽ có – aurelius

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