Thiết lập môi trường để kiểm thử hiệu suất
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Bạn có thể xác định điểm tắc nghẽn tiềm ẩn và cải thiện hiệu suất tổng thể của ứng dụng bằng cách ghi lại hoạt động trên thiết bị trong một khoảng thời gian ngắn và thu thập dấu vết về thời gian khởi động ứng dụng của bạn. Trang này cho biết cách thiết lập môi trường để kiểm thử hiệu suất.
Dùng thư viện Macrobenchmark
Thư viện Macrobenchmark đo lường các hoạt động tương tác lớn của người dùng cuối, chẳng hạn như khởi động, tương tác với giao diện người dùng và các ảnh động. Thư viện này cung cấp quyền kiểm soát trực tiếp đối với môi trường hiệu suất mà bạn đang kiểm thử. Thư viện này hỗ trợ bạn kiểm soát quá trình biên dịch, khởi động và dừng ứng dụng để đo lường trực tiếp thời gian khởi động ứng dụng chính xác. Thư viện này cũng giúp giảm thiểu độ nhiễu và sự chênh lệch giữa các lần chạy kiểm thử.
Dùng thiết bị tầm trung để xác định các vấn đề tiềm ẩn về hiệu suất
Hãy kiểm thử hiệu suất trên từng loại thiết bị mà bạn quan tâm. Các thiết bị cao cấp có thành phần nhanh có thể ẩn các vấn đề về hiệu suất trên thiết bị có RAM thấp, chậm hơn hoặc cũ hơn.
Các thiết bị cấp thấp hơn có thể mất nhiều thời gian hơn để tải dữ liệu hoặc chạy mã, giúp bạn dễ dàng xác định điểm tắc nghẽn. Việc tối ưu hoá hiệu suất cho các thiết bị tầm thấp thường cũng mang lại lợi ích tối ưu hoá cho các thiết bị cao cấp.
Giảm nhiễu
- Mạng: Kiểm thử ứng dụng (hoặc quy trình) của bạn với tốc độ Internet mạnh và ổn định. Nếu thời gian khởi động ứng dụng bao gồm cả yêu cầu mạng, hãy lưu ý rằng đây là nơi có thể xảy ra sự biến đổi.
- Sử dụng RAM: không có ứng dụng nào khác đang chạy ở chế độ nền của thiết bị trong khi kiểm thử hiệu suất khởi động ứng dụng.
- Pin: hãy nhớ sạc thiết bị của bạn để tránh hiện tượng điều tiết hiệu suất năng lượng thấp theo phần cứng cụ thể.
Kiểm thử trên bản phát hành
Hãy sử dụng bản phát hành để kiểm thử hiệu suất. Các bản gỡ lỗi không phù hợp để gỡ lỗi hiệu suất, vì các bản dựng này không tối ưu hoá quá trình biên dịch và ảnh hưởng đáng kể đến hiệu suất.
Tuy nhiên, bạn có thể sử dụng bản phát hành không bị làm rối mã nguồn để xác định các lớp và tên thao tác. Cụ thể, bạn nên bật tính năng giảm thiểu (R8) và tắt tính năng làm rối mã nguồn bằng -dontobfuscate
trong tệp Proguard.
Bạn sẽ dễ dàng xác định được bố cục, tài sản và tài nguyên nếu bản dựng không bị làm rối mã nguồn.
Hãy nhớ đưa cờ có thể định cấu hình vào tệp kê khai để các sự kiện tuỳ chỉnh của bạn xuất hiện trong các bản dựng không thể gỡ lỗi. Cờ này có trên Android 10 (API cấp 29) trở lên.
Thêm dấu vết tuỳ chỉnh vào hoạt động của ứng dụng
Thêm dấu vết tuỳ chỉnh trong ứng dụng để dễ dàng xác định những hoạt động mà ứng dụng của bạn thực hiện so với các thư viện khác. Nhờ đó, lúc nào bạn cũng có thể có thêm ngữ cảnh về những hoạt động mà ứng dụng đang thực hiện.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Set up your environment for performance testing\n\nYou can identify potential bottlenecks and improve overall app performance by\nrecording device activity over a short period of time and [collecting traces of\nyour app's startup period](/topic/performance/tracing). This page shows how to\nset up your environment for performance testing.\n\nUse the Macrobenchmark library\n------------------------------\n\nThe [Macrobenchmark\nlibrary](/topic/performance/benchmarking/macrobenchmark-overview) measures\nlarger end-user interactions, such as startup, interacting with the UI, and\nanimations. The library provides direct control over the performance environment\nyou're testing. It lets you control compiling, starting, and stopping your app\nto directly measure precise app startup time. It also works to minimize the\nnoise and differences between test runs.\n\nUse mid-range devices to identify potential performance issues\n--------------------------------------------------------------\n\nTest performance on each device type you care about. High-end devices with fast\ncomponents can hide performance problems on earlier, slower, or low RAM devices.\nLower-end devices can take longer to load data or run code, making it easier to\nidentify bottlenecks. Optimizing performance for low-end devices usually also\nbenefits optimization for high-end devices.\n\nReduce noise\n------------\n\n- Network: test your apps or processes with strong and stable internet Wi-Fi speeds. If the app startup time includes a network request, note this as a place where variability might occur.\n- RAM usage: don't have any other apps running in the background of your device while testing app startup performance.\n- Battery: ensure your device is charged to avoid any hardware-specific low power performance throttling.\n\nTest on release builds\n----------------------\n\nUse release builds to test performance. Debug builds are [unsuitable for\nperformance\ndebugging](/studio/profile/measuring-performance#apk-considerations), as they\ndon't provide compilation optimization and significantly impact performance.\n\nHowever, it's okay to use an unobfuscated release build to identify classes and\noperation names. Specifically, we recommend enabling [minify\n(R8)](/studio/build/shrink-code) and disabling obfuscation, with\n[`-dontobfuscate`](/studio/build/shrink-code#obfuscate) in the proguard file.\nIt's easier to identify layouts, assets, and resources if the build is\nunobfuscated.\n\nMake sure you include the\n[profileable](/guide/topics/manifest/profileable-element) flag in the manifest\nso that your custom events are visible in non-debuggable builds. This flag is\navailable on Android 10 (API level 29) and later.\n\nAdd custom traces to your app operations\n----------------------------------------\n\nAdd [custom traces](/topic/performance/tracing/custom-events) within your app to\nmake it easier to identify what operations are performed by your app compared to\nother libraries. This helps give you more context about what the app is doing at\nall times."]]