Cara menguji kinerja tampilan Kustom

Aug 19 2020

Saya ingin menguji performa rendering UI komponen Kustom saya. Saya menggunakan kasus uji berikut untuk memeriksa kinerja rendering.

private long getLayoutTime(int layoutRes) {
        final Context targetContext = getInstrumentation().getTargetContext();
        final LayoutInflater layoutInflater = LayoutInflater.from(targetContext);

        final long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            final View view = layoutInflater.inflate(layoutRes, null);
            view.setLayoutParams(new ViewGroup.LayoutParams(0, 0));

            view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
            final int measuredHeight = view.getMeasuredHeight();
            final int measuredWidth = view.getMeasuredWidth();

            view.layout(0, 0, measuredWidth, measuredHeight);
        }
        return System.currentTimeMillis() - startTime;
    }

Dengan menggunakan kode ini saya dapat menguji waktu render tata letak. Sehingga saya mengubah desain tata letak untuk kinerja yang lebih baik. Sekarang saya membuat kelas tampilan Kustom dengan beberapa tata letak dan komponen seperti gambar, tampilan teks, dan lain-lain. Saya akan melampirkan kelas tersebut pada waktu proses dan komponen akan dibuat pada waktu proses berdasarkan pada respons server. Saya tidak akan melampirkan komponen khusus ini dalam XML. Sekarang saya ingin menguji performa rendering tampilan kustom ini. Tolong sarankan saya alat atau cara apa pun untuk menghitung waktu rendering UI untuk tampilan kustom.

Gambar Profiler saya.

Jawaban

1 EsjayIT Aug 27 2020 at 16:55

Anda dapat dengan mudah mengukur kinerja dengan menggunakan alat profiler bawaan studio android (di panel kiri bawah). penting: kinerja tampilan pelanggan tergantung pada perangkat yang berjalan di sini adalah contoh yang telah saya uji untuk redmi 7a

perangkat: redmi 7a RAM: 2GB

 private fun startTest() {
    for (x in 0..10000) {
        val textview = TextView(this)?.apply { text = "Dummy Text $x" }
        mLinearLayout?.addView(textview)
    }
}
  1. menjalankan sebuah proyek
  2. mulai profiler, tunggu hingga grafik menjadi normal
  3. pada tombol Klik startTest (), Anda akan melihat grafik menjadi normal ke tinggi
  4. pilih area yang mencakup grafik area tinggi dan lihat waktu mulai dan waktu berakhir
  5. gunakan kalkulator sederhana dan ukur perbedaan

hasil uji kasus saya: menambahkan textview 10000 kali dalam linearlayout membutuhkan 32,411s (info perangkat diberikan di atas)