Ứng dụng mẫu Builder để tối ưu hóa hiệu suất mã nguồn

1. Phân tích và cải tiến

Mục tiêu của việc tối ưu hóa mã nguồn bao gồm:

  • Quản lý vòng đời của đối tượng và biến.
  • Kiểm soát số lượng đối tượng và biến được tạo ra.

Về quản lý vòng đời

Cốt lõi là đảm bảo các đối tượng/điều chỉ tồn tại khi cần thiết và loại bỏ khi không còn dùng đến, giảm thiểu sử dụng bộ nhớ và tài nguyên không cần thiết.

// Không khuyến khích: Biến toàn cục tồn tại lâu dài
let danhSachToanCuc = [];
function xuLyDuLieu() {
  danhSachToanCuc = layDuLieuLon(); // Vẫn chiếm bộ nhớ sau xử lý
}

// Khuyến khích: Biến cục bộ tự động giải phóng
function xuLyDuLieu() {
  let danhSachCucBo = layDuLieuLon(); // Tự giải phóng sau khi hàm kết thúc
  // Xử lý logic...
}

Về kiểm soát số lượng đối tượng

Tập trung vào việc giảm số lượng đối tượng không cần thiết và quản lý tổng số đối tượng hoạt động để giảm tải cho bộ nhớ và quá trình thu gom rác (GC).

// Không khuyến khích: Tạo mới nhiều đối tượng trong vòng lặp
for (int i = 0; i < 1000; i++) {
  DoiTuong obj = new DoiTuong(); // Mỗi lần vòng lặp tạo mới một đối tượng
}

// Khuyến khích: Tái sử dụng đối tượng
DoiTuong obj = new DoiTuong();
for (int i = 0; i < 1000; i++) {
  obj.taiDat(); // Đặt lại trạng thái thay vì tạo mới
  // Sử dụng đối tượng
}

2. Mẫu Builder và tối ưu hóa hiệu suất

Mẫu Builder giúp kiểm soát quy trình tạo đối tượng tinh vi hơn, từ đó tối ưu hóa hiệu suất ở nhiều cấp độ khác nhau.

Hạn chế các thao tác dư thừa trong quá trình tạo đối tượng

// Cách truyền thống: Có thể khởi tạo thuộc tính không cần thiết
class DoiTuongPhucTap {
  private A a;
  private B b;

  public DoiTuongPhucTap() {
    this.a = new A(); // Có thể dư thừa
    this.b = new B(); // Có thể dư thừa
  }
}

// Mẫu Builder: Chỉ khởi tạo những gì cần thiết
class DoiTuongPhucTapBuilder {
  private A a;
  private B b;

  public DoiTuongPhucTapBuilder setA(A a) {
    this.a = a;
    return this;
  }

  public DoiTuongPhucTapBuilder setB(B b) {
    this.b = b;
    return this;
  }

  public DoiTuongPhucTap xayDung() {
    DoiTuongPhucTap doiTuong = new DoiTuongPhucTap();
    if (a != null) doiTuong.setA(a);
    if (b != null) doiTuong.setB(b);
    return doiTuong;
  }
}

Giảm số lượng đối tượng tạm thời

// Cách truyền thống: Tạo nhiều chuỗi tạm thời
String ketQua = "ten: " + ten + ", tuoi: " + tuoi + ", email: " + email;

// Mẫu Builder (như StringBuilder): Không có đối tượng tạm thời
StringBuilder builder = new StringBuilder();
builder.append("ten: ").append(ten)
       .append(", tuoi: ").append(tuoi)
       .append(", email: ").append(email);
String ketQua = builder.toString(); // Chỉ tạo một đối tượng cuối cùng

Thẻ: mẫu-builder tối-ưu-hiệu-suất Java JavaScript

Đăng vào ngày 31 tháng 5 lúc 15:57