Hiệu năng chuỗi (`String`) của Java được cải thiện mạnh
(inside.java)Mở đầu
- Trong JDK 25,
String::hashCodeđược cải tiến để trong phần lớn trường hợp có thể được xử lý bằng constant folding. - Hiệu năng khi tra cứu bằng khóa chuỗi trong các Map bất biến được cải thiện đáng kể.
Nội dung chính
- Trong cấu trúc
Map<String, MethodHandle>, việc tra cứu key được tối ưu hóa theo cách tĩnh. - Nội bộ áp dụng
@Stablecho trườngString.hash; khi giá trị hash đã cố định, JVM sẽ tin cậy giá trị được cache này. - Nhờ đó, việc tính hash, tính chỉ mục Map và tra cứu method handle đều được xử lý thành hằng số ở thời điểm biên dịch.
- Kết quả benchmark cho thấy hiệu năng được cải thiện hơn tối đa 8 lần so với JDK 24 trước đó.
- Điểm hạn chế là khi hashcode bằng 0 thì constant folding không diễn ra (
""cũng nằm trong trường hợp này). - Thông qua JEP 502, trong tương lai dự kiến sẽ cung cấp khả năng tương tự cho cả mã người dùng.
Kết luận
- Tối ưu hóa
Stringtrong JDK 25 đặc biệt hiệu quả với mã dựa trên cấu trúc tĩnh. @Stablehiện là cơ chế chỉ dùng nội bộ, nhưng trong tương lai có thể được mở rộng thành tính năng công khai.- Khi áp dụng JDK mới nhất, hiệu năng xử lý Map dựa trên chuỗi có thể được cải thiện đáng kể.
Chưa có bình luận nào.