8 điểm bởi baeba 2025-05-02 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

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 @Stable cho trường String.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 String trong JDK 25 đặc biệt hiệu quả với mã dựa trên cấu trúc tĩnh.
  • @Stable hiệ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.

Chưa có bình luận nào.