Menyiapkan lingkungan untuk pengujian performa
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Anda dapat mengidentifikasi potensi bottleneck dan meningkatkan performa aplikasi secara keseluruhan dengan
merekam aktivitas perangkat dalam waktu singkat dan mengumpulkan rekaman aktivitas
periode startup aplikasi. Halaman ini menunjukkan cara
menyiapkan lingkungan Anda untuk pengujian performa.
Menggunakan library Macrobenchmark
Library Macrobenchmark
mengukur interaksi
pengguna akhir yang lebih besar, seperti
startup, interaksi dengan UI, dan animasi. Library ini menyediakan kontrol langsung atas lingkungan performa
yang Anda uji. Library tersebut memungkinkan Anda mengontrol kompilasi, memulai, dan menghentikan aplikasi
untuk mengukur waktu presisi startup aplikasi secara langsung. Pengujian ini juga berfungsi untuk
meminimalkan derau dan perbedaan di antara pengujian.
Menggunakan perangkat kelas menengah untuk mengidentifikasi potensi masalah performa
Uji performa pada setiap jenis perangkat yang diinginkan. Perangkat kelas atas dengan komponen
cepat dapat menyembunyikan masalah performa pada perangkat dengan RAM yang lebih lama, lebih lambat, atau rendah.
Perangkat kelas bawah dapat memerlukan waktu lebih lama untuk memuat data atau menjalankan kode, sehingga
mempermudah identifikasi bottleneck. Mengoptimalkan performa untuk perangkat kelas bawah biasanya juga
akan berpengaruh positif pada pengoptimalan untuk perangkat kelas atas.
Mengurangi derau
- Jaringan: uji aplikasi atau proses Anda dengan kecepatan Wi-Fi internet
yang kuat dan stabil. Jika waktu startup aplikasi menyertakan permintaan jaringan, perhatikan hal ini sebagai tempat
kemungkinan terjadinya variabilitas.
- Penggunaan RAM: jangan menjalankan aplikasi lain di latar belakang perangkat
saat menguji performa startup aplikasi.
- Baterai: pastikan perangkat Anda diisi daya untuk menghindari throttling performa daya rendah
yang spesifik untuk hardware.
Menguji di build rilis
Gunakan build rilis untuk menguji performa. Build debug tidak cocok untuk
proses debug
performa, karena
tidak menyediakan pengoptimalan kompilasi dan berdampak signifikan terhadap performa.
Namun, Anda dapat menggunakan build rilis yang tidak di-obfuscate untuk mengidentifikasi class dan
nama operasi. Secara khusus, sebaiknya aktifkan minifikasi
(R8) dan nonaktifkan obfuscation, dengan
-dontobfuscate
dalam file proguard.
Identifikasi tata letak, aset, dan resource akan lebih mudah jika
build tidak di-obfuscate.
Pastikan Anda menyertakan tanda
profileable dalam manifes
sehingga peristiwa kustom Anda terlihat dalam build yang tidak dapat di-debug. Tanda ini
tersedia di Android 10 (level API 29) dan yang lebih tinggi.
Menambahkan rekaman aktivitas kustom ke operasi aplikasi
Tambahkan rekaman aktivitas kustom dalam aplikasi Anda untuk
memudahkan identifikasi operasi yang dilakukan oleh aplikasi Anda dibandingkan dengan
library lain. Hal ini membantu Anda mendapatkan lebih banyak konteks tentang performa aplikasi
setiap saat.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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."]]