사용자 정의보기 성능을 테스트하는 방법

Aug 19 2020

커스텀 컴포넌트 UI 렌더링 성능을 테스트하고 싶습니다. 렌더링 성능을 확인하기 위해 다음 테스트 케이스를 사용했습니다.

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

이 코드를 사용하여 레이아웃 렌더링 타이밍을 테스트 할 수 있습니다. 그래서 더 나은 성능을 위해 레이아웃 디자인을 변경했습니다. 이제 이미지, 텍스트보기 등과 같은 여러 레이아웃과 구성 요소가있는 사용자 정의보기 클래스를 만들고 있습니다. 런타임에 클래스를 연결하고 서버 응답을 기반으로 런타임에 구성 요소를 만듭니다. 이 사용자 지정 구성 요소를 XML로 첨부하지 않겠습니다. 이제이 사용자 정의보기의 렌더링 성능을 테스트하고 싶습니다. 사용자 정의보기에 대한 UI 렌더링 시간을 계산하는 도구 또는 방법을 제안하십시오.

내 프로필러 이미지.

답변

1 EsjayIT Aug 27 2020 at 16:55

안드로이드 스튜디오에 내장 된 툴 프로파일 러 (왼쪽 하단 패널)를 사용하여 쉽게 성능을 측정 할 수 있습니다. 중요 : 고객보기 성능은 실행중인 장치에 따라 다릅니다. 여기는 redmi 7a에 대해 테스트 한 샘플입니다.

장치 : 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. 프로젝트를 진행하다
  2. 프로파일 러를 시작하고 그래프가 정상이 될 때까지 기다립니다.
  3. 버튼을 클릭하면 startTest (), 그래프가 정상에서 높음을 볼 수 있습니다.
  4. 그래프 상위 영역을 포함하는 영역을 선택하고 시작 시간과 종료 시간을 확인합니다.
  5. 간단한 계산기를 사용하고 차이 측정

내 테스트 케이스 결과 : linearlayout에서 textview를 10000 번 추가하면 32.411s가 걸립니다 (위에 제공된 장치 정보)