추운 겨울, 볼륨업은 어떻게? APM이 알아야 할 사항

저자: Youdao

1. APM이란?

APM 의 전체 이름 은 응용 프로그램 성능 관리 이며 중국어로 응용 프로그램 성능 관리 로 번역됩니다 . 우리는 일반적으로 응용 프로그램의 관련 성능 데이터를 수집 및 구성하고 최종적으로 점수 형식으로 표시하여 응용 프로그램의 현재 성능 수준을 보다 직관적으로 이해할 수 있습니다. 모바일 단말기에서 APM은 일반적으로 Crash Free Rate , Cold Start , UIBlocking , LCPMemory 의 다섯 가지 지표로 나눌 수 있습니다 .

2. 충돌 무료 요금

Crash Free Rate는 가장 중요한 지표인 애플리케이션의 크래시율입니다. 결국, 다른 것과는 별개로 앱이 사용 가능해야 하고, 계속해서 충돌이 발생하면 사용자가 직접 나쁜 리뷰를 작성하거나 앱을 제거할 수 있으며 최종 결과는 우리가 원하는 것이 아닙니다. 일반적으로 앱의 충돌률은 1%를 초과할 수 없습니다. 즉, 안정성률은 99%이며, 더 엄격하게는 안정성률이 99.99% 이상이어야 합니다. 적격 충돌률을 가진 앱으로 간주됩니다. 물론 사용자 기반에 따라 대기업의 내부 안정성 비율은 최소 소수점 이하 3자리 이상 정확할 것입니다.

3. 콜드 스타트

콜드 스타트 는 콜드 스타트입니다. 일반적으로 백그라운드에 앱 프로세스가 없을 때 데스크탑 앱 아이콘을 클릭하여 첫 화면이 표시될 때까지 앱 프로세스를 다시 생성하는 것으로 정의됩니다. 소요시간은 짧을수록 좋으며, 일반적으로 2초 미만이 가장 좋으며, 3초는 거의 용인되지 않으며, 3초 이상은 최적화가 되어야 합니다.

그러나 위의 내용은 업계에서 개괄적인 결론일 뿐입니다. 실제 애플리케이션에서는 앱의 첫 화면 페이지가 시작 애니메이션 페이지와 같이 사용자에게 무의미하지만 시간이 많이 걸리는 작업이 포함된 페이지일 수 있으므로 일부 회사에서는 콜드 스타트의 끝점을 사용자 입장에서 정의된 콜드 스타트 ​​의미 있는 메인 페이지. 사용자 입장에서의 콜드 스타트를 위해서는 앱의 콜드 스타트 ​​시간을 계산할 때 첫 화면에서 애니메이션을 시작하는 것과 같이 시간이 많이 걸리는 무의미한 작업에 걸리는 시간을 걸러낼 필요가 있습니다.

4. UI 차단

UI Blocking은 UI 동결을 말하며 APM을 측정하는 중요한 지표이기도 합니다. Android에서 설정한 애플리케이션의 전체 프레임 속도는 **60fps(Frame Per Second), 즉 초당 60프레임, 즉 한 프레임의 드로잉을 완료하는 데 약 16.67ms입니다. **60fps로 설정한 이유는 대부분의 사람들이 60fps 이상의 영상 업데이트를 인지하지 못하기 때문에 60fps를 초과하는 것은 의미가 없습니다. 여기에서 60fps는 각 화면 업데이트에 대해 60프레임 또는 40프레임만이 아닌 초당 최대 디스플레이 프레임 수를 의미하므로 명확하게 구분해야 합니다.

그리고 화면 업데이트에 60프레임이 필요하지만 이 기간 동안 50프레임만 업데이트되면 10프레임이 누락되는 것을 소위 프레임 손실 이라고 하며 이 현상으로 인해 페이지가 정지됩니다. Android Vitals의 동결 설명에 따라 동결은 일반적으로 다음 두 가지 차원에서 판단됩니다.

  • 느린 프레임 속도: 느린 프레임은 렌더링 시간이 16.67ms를 초과하는 인터페이스 프레임을 나타냅니다. 느린 프레임 속도는 총 프레임 수에 대한 느린 프레임의 비율로, 프레임의 50%가 느린 프레임일 때 사용자는 확실히 지연을 느낄 것입니다. 느린 프레임 속도를 50% 미만으로 제어해야 합니다. 작을수록 좋습니다.
  • 정지 프레임 속도: 정지 프레임은 렌더링 시간이 700ms를 초과하는 인터페이스 프레임을 말하며, 정지 프레임이 나타나면 페이지에서 심각한 정지 현상이 발생합니다. 일반적으로 느린 프레임과 정지된 프레임은 별도로 추적되며 정지된 프레임 속도는 총 프레임 수에 대한 정지된 프레임의 비율입니다. 고정 프레임이 발생하지 않도록 노력해야 합니다.

따라서 일반적으로 위의 두 가지 기준 이상으로 페이지 지연을 측정합니다. 그러나 한 가지만 기억하세요. ** FPS 수준은 페이지가 멈추었는지 여부를 직접 판단할 수 없습니다. **위에서 언급한 것처럼 모든 화면 업데이트에 60프레임이 필요한 것은 아닙니다. 애니메이션이 0.5초 동안만 표시되어야 하는 경우 이 애니메이션의 최대 프레임 속도는 30fps이지만 이 애니메이션이 반드시 정지되는 것은 아닙니다. 또한 총 50프레임의 사진이 있는데 첫 번째 프레임은 200ms, 다음 49프레임은 800ms가 걸리는데 이 경우 프레임레이트는 50으로 높지만 프레임의 렌더링 시간은 고르지 않아 사용자가 멈춘 느낌을 받게 됩니다. 요약하면 프레임 손실이 있는지 프레임 지연이 있는지에 따라 페이지 정지를 분석해야 합니다.

5. LCP

LCP 의 전체 이름 은 Largest Contentful Paint , 즉 페이지에서 가장 큰 콘텐츠 블록의 그림입니다. 이 시간은 가능한 한 짧아야 하지만 페이지의 특정 비즈니스 논리와 관련된 LCP 시간을 계산하기 위한 컷오프 지점에 대한 명확한 업계 표준이 없습니다. 타사 플랫폼을 사용하여 데이터 분석 및 최적화를 위한 정보를 묻고 수집할 수 있습니다.

6. 기억력

메모리 는 이름에서 알 수 있듯이 메모리입니다. 앱이 할당할 수 있는 메모리는 제한되어 있으며 메모리 누수, 메모리 오버플로 및 메모리 지터와 같은 현상도 앱의 성능과 사용자 경험에 영향을 미칩니다. 개발 과정에서 우리는 메모리의 세부 사항에 주의를 기울여야 하며 이를 감지하기 위해 타사 라이브러리를 사용해야 합니다.

7. 기타

위의 지표 외에도 트래픽 사용량 전력 사용량 과 같은 다른 지표가 있으므로 애플리케이션 성능을 개선하고 좋은 성능 데이터를 얻을 수 있습니다. 그러나 위에서 언급한 지표들은 대부분의 기업에 있어 경직된 지표로 사용자의 직관적인 경험과 관련되어 있어 우선적으로 고려되어야 할 사항이다.

8. 성능 디버깅 도구

  • GPU 오버 드로잉 및 GPU 렌더링 모드 분석("HWUI 렌더링 모드 분석"이라고도 함): 휴대폰에는 개발자 옵션에서 활성화할 수 있는 내장 기능이 있습니다. 자세한 내용은 다음 링크를 참조하십시오: developer.android .com/topic/perfo…
  • LeakCanary: 타사 라이브러리, 메모리 누수 감지 도구
  • BlockCanary: 타사 라이브러리, 페이지 정지 감지 도구
  • Systrace: Android 플랫폼 수준 성능 추적 도구
  • Perfetto: Android 10에 도입된 새로운 플랫폼 수준의 성능 추적 도구로 Systrace를 대체할 수 있으며 Android뿐만 아니라 Linux 및 Chrome에서도 사용할 수 있습니다.
  • Profiler: CPU, 메모리, 네트워크 및 배터리 사용량을 모니터링할 수 있는 Android Studio 3.0 이상과 함께 제공되는 성능 모니터링 도구

위는 일반적으로 사용되는 로컬 성능 디버깅 도구이며 온라인 애플리케이션 성능 데이터 추적을 위해 Firebase , Sensors Data , YoumengBugly 와 같은 기존 플랫폼을 사용할 수 있습니다. 물론 리소스가 충분하다면 데이터 모니터링을 위한 자체 구축 플랫폼을 구축하는 것이 좋습니다.

9. 요약

이 글은 APM에 익숙하지 않은 학생들이 쉽게 이해할 수 있도록 APM의 기본 개념을 중심으로 소개한다. 성능이 필요한 학생들은 APM에 우선순위를 두고 롤업을 시작할 수 있습니다!

안드로이드 연구 노트

Android 성능 최적화: https://qr18.cn/FVlo89
Android 차량: https://qr18.cn/F05ZCM
Android 역방향 보안 연구 노트: https://qr18.cn/CQ5TcL
Android 프레임워크 원칙: https://qr18.cn/AQpN4J
Android 오디오 및 비디오: https://qr18.cn/Ei3VPD
Jetpack(Compose 포함): https://qr18.cn/A0gajp
Kotlin: https://qr18.cn/CdjtAF
Gradle: https://qr18.cn/DzrmMB
OkHttp 소스 코드 분석 노트: https://qr18.cn/Cw0pBD
Flutter: https://qr18.cn/DIvKma
Android Eight Knowledge Body: https://qr18.cn/CyxarU
Android Core Notes: https://qr21.cn/CaZQLo
Android 지난 인터뷰 질문: https://qr18.cn/CKV8OZ
2023년 최신 Android 인터뷰 질문 모음: https://qr18.cn/CgxrRy
Android 차량 개발 면접 연습: https://qr18.cn/FTlyCJ
오디오 및 비디오 인터뷰 질문:https://qr18.cn/AcV6Ap

Supongo que te gusta

Origin blog.csdn.net/weixin_61845324/article/details/132318430
Recomendado
Clasificación