Nghiên cứu điển hình

Monzo tăng các chỉ số hiệu suất lên đến 35% bằng một bản cập nhật R8 đơn giản

Đọc trong 2 phút
Ben Weiss
Kỹ sư Quan hệ với nhà phát triển

Monzo là một ngân hàng kỹ thuật số ở Vương quốc Anh với 15 triệu khách hàng và đang trên đà phát triển. Khi ứng dụng mở rộng quy mô, nhóm kỹ thuật nhận thấy thời gian khởi động ứng dụng là một khía cạnh quan trọng cần cải thiện nhưng lo ngại rằng việc này sẽ đòi hỏi những thay đổi đáng kể đối với cơ sở mã của họ.

Bằng cách bật hoàn toàn các hoạt động tối ưu hoá R8, Monzo đã giảm đáng kể tỷ lệ lỗi Ứng dụng không phản hồi (ANR) xuống 35%. Thay đổi đơn giản này đã chứng minh rằng những hoạt động tối ưu hoá có tác động không phải lúc nào cũng đòi hỏi nỗ lực kỹ thuật phức tạp.

Khai thác nhiều lợi ích về hiệu suất nhờ chế độ đầy đủ R8

Monzo nhận thấy chế độ đầy đủ của R8 là một giải pháp dễ dàng đáng thử; và giải pháp này đã có hiệu quả, giúp cải thiện hiệu suất trên mọi phương diện:

  • Độ tin cậy khi khởi động: Khởi động nguội cải thiện 30%, khởi động ấm cải thiện 24% và khởi động nóng cải thiện 14%.
  • Tốc độ khởi chạy: Thời gian khởi chạy P50 tăng 11% và thời gian khởi chạy P90 tăng 12%.
  • Hiệu quả: Kích thước tổng thể của ứng dụng đã giảm 9%.
  • Độ ổn định: Giảm 35% số lỗi ANR.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Cho phép tối ưu hoá chỉ bằng một thay đổi

Nhiều ứng dụng Android sử dụng tệp cấu hình mặc định đã lỗi thời, vô hiệu hoá hầu hết chức năng của trình tối ưu hoá R8. Thay đổi chính mà Monzo đã thực hiện để cải thiện hiệu suất là thay thế tệp mặc định proguard-android.txt bằng proguard-android-optimize.txt. Thay đổi này sẽ xoá chỉ thị -dontoptimize và cho phép R8 thực hiện đúng chức năng của mình.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

Sau khi thực hiện thay đổi này, bạn nên xem xét các tệp cấu hình Keep. Các tệp này cho R8 biết những phần nào trong mã của bạn không cần thay đổi (thường là vì chúng được gọi một cách linh động hoặc bởi các thư viện bên ngoài). Việc dọn dẹp các quy tắc Keep không cần thiết có nghĩa là R8 có thể làm được nhiều việc hơn.

Cải thiện hiệu suất cuộn bằng Hồ sơ cơ sở

Để nâng cao hơn nữa trải nghiệm người dùng, Monzo đã triển khai Hồ sơ cơ sở, đặc biệt là nhắm đến hiệu suất cuộn và kết xuất trên nguồn cấp dữ liệu chính của họ. Chiến lược này đảm bảo rằng những hành trình phổ biến nhất của người dùng (mở ứng dụng và cuộn bảng tin) được tối ưu hoá hoàn toàn. Tác động lên quá trình kết xuất là rất lớn: hiệu suất cuộn P90 nhanh hơn 71% và hiệu suất cuộn P95 cải thiện 87%. Giờ đây, việc cuộn ứng dụng mượt mà hơn trước.

Monzo đã tích hợp tính năng này vào quy trình phát hành để duy trì những điểm cải tiến này theo thời gian. Neumayer giải thích: "Chúng tôi kích hoạt quy trình tạo hồ sơ cơ sở vào mỗi ngày trong tuần (trước khi chạy bản dựng chạy vào ban đêm) và xác nhận những thay đổi mới nhất sau khi hoàn tất".

Theo kịp quá trình phát triển Android hiện đại

Trải nghiệm của Monzo cho thấy những gì có thể đạt được khi bạn luôn cập nhật các đề xuất về công cụ tạo bản dựng Android. Mặc dù các ứng dụng cũ thường gặp khó khăn khi sử dụng tính năng phản chiếu phức tạp, nhưng Monzo nhận thấy quá trình chuyển đổi diễn ra khá đơn giản nhờ việc ghi lại đúng cách các Quy tắc Keep. "Chúng tôi luôn thêm một bình luận giải thích lý do áp dụng Quy tắc giữ lại, nhờ đó, chúng tôi biết khi nào có thể xoá các quy tắc một cách an toàn", Neumayer cho biết.

Lời khuyên của Neumayer dành cho các nhóm khác? Thường xuyên kiểm tra các phương pháp của bạn so với các tiêu chuẩn hiện tại: "Xem các đề xuất mới nhất của Google về hiệu suất của ứng dụng và kiểm tra xem bạn có đang làm theo tất cả các lời khuyên mới nhất hay không".

Để bắt đầu và tìm hiểu thêm về R8, hãy truy cập vào https://d.android.com/r8

Tác giả:

Tiếp tục đọc