Özel görünüm performansı nasıl test edilir?

Aug 19 2020

Özel bileşen kullanıcı arayüzü oluşturma performansımı test etmek istiyorum. Oluşturma performansını kontrol etmek için aşağıdaki test senaryosunu kullandım.

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;
    }

Bu kodu kullanarak düzen oluşturma zamanlamasını test edebilirim. Böylece daha iyi performans için yerleşim tasarımını değiştirdim. Şimdi, görüntüler, metin görünümleri vb. Gibi birden çok düzen ve bileşen içeren bir Özel görünüm sınıfı oluşturuyorum. Sınıfı çalışma zamanında ekleyeceğim ve bileşenler, sunucu yanıtına göre çalışma zamanında oluşturacak. Bu özel bileşeni XML'e eklemeyeceğim. Şimdi bu özel görünümün oluşturma performansını test etmek istiyorum. Lütfen bana herhangi bir araç veya özel görünüm için kullanıcı arayüzü oluşturma süresini hesaplamanın herhangi bir yolunu önerin.

Profiler resmim.

Yanıtlar

1 EsjayIT Aug 27 2020 at 16:55

Android studio yerleşik araç profilleyicisini (sol alt panelde) kullanarak performansı kolayca ölçebilirsiniz. önemli: müşteri görünümü performansı çalışan bir cihaza bağlıdır. Redmi 7a için test ettiğim bir örnek burada

cihaz: 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. proje yürütmek
  2. profil oluşturucuyu başlat, grafik normale dönene kadar bekle
  3. düğmesine tıklayın startTest (), grafiğin normalden yükseğe çıktığını göreceksiniz
  4. Grafiğin yüksek alanını kapsayan alanı seçin ve başlangıç ​​ve bitiş zamanını görün
  5. basit bir hesap makinesi kullanın ve farkı ölçün

benim test senaryosu sonucum: doğrusal düzende 10000 kez metin görünümü eklemek 32.411 saniye sürer (cihaz bilgisi yukarıda verilmiştir)