Thời điểm hiện tại thì Java và JVM đã tối ưu hóa khá nhiều tốc độ chạy ứng dụng, tuy nhiên có nhiều mẹo tối ưu hóa có thể giúp chúng ta cải thiện tốc độ, hiệu suất của ứng dụng.

Tránh viết các phương thức dài

Nếu bạn viết các phương thức dài, thì máy ảo Java (JVM) của bạn sẽ mất nhiều thời gian hơn để thực thi. JVM là từ viết tắt của Java Virtual Machine, có nhiệm vụ cung cấp môi trường để thực thi các chương trình Java, cho phép các ứng dụng Java chạy trên bất kỳ hệ điều hành hoặc máy ảo nào.

Nếu một phương thức quá dài và đang xử lý quá nhiều logic thì chúng ta nên chia nó thành nhiều phương thức nhỏ tại những điểm logic hợp lý, mỗi phương thức chỉ nên tập trung cho một nhiệm vụ nhất định.

Hạn chế sử dụng lớp BigDecimal

Mặc dù lớp BigDecimal hữu ích cho các tình huống cụ thể, nó đảm bảo độ chính xác cho các số thập phân và dấu phẩy động, đặc biệt trong việc tính toán tiền tệ, nhưng nó cản trở hiệu suất của các ứng dụng. Lập trình viên càng thực hiện nhiều phép tính BigDecimal thì ứng dụng của họ càng chậm. 

Nếu không cần độ chính xác mà lớp BigDecimal mang lại thì có thể sử dụng Long hoặc Double để thay thế.

Sử dụng kiểu dữ liệu nguyên thủy thay vì đối tượng

Có thể sử dụng kiểu dữ liệu nguyên thủy thay vì đối tượng để giảm chi phí xử lý và tăng hiệu suất, tuy nhiên điều này cũng có ưu nhược điểm riêng, mình sẽ phân tích dưới đây:

  • sử dụng kiểu dữ liệu nguyên thủy thì JVM sẽ lưu trữ giá trị của chúng trong bộ nhớ Stack chứ không phải trong Heap, mà từ bài Bộ nhớ Heap vs bộ nhớ Stack chúng ta đã biết là dữ liệu được lưu trong Stack sẽ truy cập nhanh hơn Heap.
  • khi dữ liệu được truyền giữa các phương thức thì nên dùng kiểu đối tượng vì lúc đó chỉ có các tham chiếu được sao chép và không gia tăng chi phí bộ nhớ, lúc này thì không nên dùng kiểu nguyên thủy.
  • kiểu nguyên thủy chỉ nên dùng trong việc khai báo cục bộ: trong hàm, trong vòng lặp, kết quả trung gian.

Hạn chế sử dụng biểu thức chính quy Regex

Regex là một loại biểu thức chính quy hỗ trợ đắc lực trong việc tìm kiếm dữ liệu trong chuỗi, nó được triển khai dễ dàng tiện lợi, tuy nhiên cái giá phải trả là thời gian xử lý khá là chậm. Nếu bắt buộc phải sử dụng Regex trong logic thì chúng ta nên lưu lại biến tham chiếu của nó vào cache thay vì phải biên dịch liên tục.

Cache lại dữ liệu trong ứng dụng Java

Thực thi cache lại dữ liệu trong ứng dụng để tăng tốc độ tải trang và tốn ít tài nguyên máy chủ hơn.

cài đặt bộ nhớ đệm thích hợp giúp giảm độ trễ, tránh tắc nghẽn mạng, cải thiện tính khả dụng của nội dung và giảm tiêu thụ bộ nhớ và chu kì của CPU.

Sử dụng StringBuilder cho việc nối chuỗi

Việc nối chuỗi trong ứng dụng là việc cần thiết để xử lý một vài logic, tuy nhiên nhược điểm của nó là gây tốn bộ nhớ.

Thay vì sử dụng toán tử + thì chúng ta nên sử dụng StringBuilder để tránh việc tạo nhiều đối tượng khi ghép chuỗi.

StringBuilder không an toàn cho đa luồng nhưng bù lại tốc độ thì lại nhanh hơn nhiều StringBuffer.

Xem thêm các bài viết liên quan dưới đây: