View in English

  • 메뉴 열기 메뉴 닫기
  • Apple Developer
검색
검색 닫기
  • Apple Developer
  • 뉴스
  • 둘러보기
  • 디자인
  • 개발
  • 배포
  • 지원
  • 계정
페이지에서만 검색

빠른 링크

5 빠른 링크

비디오

메뉴 열기 메뉴 닫기
  • 컬렉션
  • 주제
  • 전체 비디오
  • 소개

더 많은 비디오

  • 소개
  • 요약
  • 자막 전문
  • 앱의 전력 사용량 프로파일링 및 최적화하기

    배터리 수명을 극대화하기 위해 앱을 최적화하는 방법을 알아보세요. Xcode에 연결되어 있거나 이동할 때 문제를 재현할 수 있는지 확인하여 앱 전력 문제의 근본 원인을 파악하는 방법을 찾을 수 있습니다. 전력 사용량을 측정하여 새로운 기능에 대해 더 적절한 판단을 하고 보다 효율적인 앱를 적극적으로 빌드하는 방법을 알아보세요.

    챕터

    • 0:00 - 인사말
    • 1:52 - 재현 가능한 문제 디버깅하기
    • 9:37 - 숨겨진 문제 찾기
    • 16:19 - 전력 사용량 비교하기
    • 18:25 - 선제적으로 최적화하기

    리소스

    • Measuring your app’s power use with Power Profiler
    • Performance and metrics
      • HD 비디오
      • SD 비디오

    관련 비디오

    WWDC25

    • Instruments를 사용하여 CPU 성능 최적화하기
  • 비디오 검색…

    안녕하세요 저는 Apple의 소프트웨어 엔지니어인 Wiam입니다 전력 최적화에 대해 알려드리겠습니다

    개발자는 고품질의 놀라운 앱 경험을 제공하는 전문가죠 사람들은 온종일 활용 가능한 앱을 신뢰하며, 이 신뢰에서 중요한 요소 중 하나가 우수한 배터리 수명입니다 전력 효율이 좋은 앱의 사용 시간은 더 길 뿐 아니라 만족감을 높입니다 반면, 과도한 전력을 소비하는 앱은 긍정적인 경험을 빠르게 악화할 수 있죠 오늘 소개할 도구는 강력한 성능과 놀라운 전력 효율성을 모두 갖춘 앱을 만드는 데 도움이 될 것입니다 이 비디오에선 도구 기능으로 전력 문제를 해결하는 새로운 방법을 알려드리죠 내용을 자세히 다루기 전에 세션 내용을 소개해 드릴게요 개발 시, 쉽게 재현 가능한 문제 해결 방법을 알려드리죠 실제 예로, 과도한 전력 사용을 식별하고 줄이는 방법을 보여드립니다

    그다음 쉽게 파악하기 어려운 복잡한 실제 시나리오의 해결 방법을 살펴봅니다 어떤 환경에서도 데이터를 수집하는 방법을 보여드릴게요

    다음으로 다양한 구현의 전력 소비를 비교하는 방법을 시연하겠습니다 앱의 효율성을 명확히 측정 및 개선할 수 있죠

    마지막으로 개발 초기 단계에서 전력 문제를 사전에 감지하고 최적화된 앱을 출시하는 방법을 다룰게요

    Xcode의 에너지 사용량이 높더라도 이 문제의 근본적인 원인을 찾기란 어려울 수 있습니다 이러한 상황에서는 앱을 실행하고 문제를 재현하며 전력 지표를 기록하는 기능이 필요합니다

    이때 Instruments의 Power Profiler가 매우 유용하죠 이 도구를 통해 앱을 프로파일링하고 전력 추적을 기록 후 결과를 Instruments에서 시각화할 수 있습니다 제 앱엔 에너지 사용량 문제가 있습니다 iPhone과 iPad에서 콘텐츠를 시청할 수 있는 비디오 스트리밍 앱인 Destination Video를 개발 중입니다 앱을 개선하기 위해 비디오 컬렉션 탐색을 위한 Library 창을 추가했죠 Xcode Organizer의 에너지 보고서를 확인한 결과 이전보다 CPU 사용량이 많이 증가했네요 이는 성능 저하와 배터리 수명 감소로 이어집니다 Instruments의 Power Profiler로 이 회귀를 조사해 보겠습니다 XCode 프로젝트를 열고 iPhone을 무선 연결하죠 Product로 이동하여 Profile을 클릭합니다 앱이 기기에 빌드 및 설치되고 Instruments가 열리죠 빈 템플릿과 Power Profiler를 선택한 다음 CPU Profiler도 선택해 CPU 사용량 정보를 캡처하죠 필요에 따라 다른 도구도 선택할 수 있습니다 기본 설정을 사용해 기록을 시작하겠습니다

    이제 기기로 돌아가 Library 창을 열겠습니다

    이 창을 여니 멈췄네요 지금 조사 중인 문제와 관련이 있을 가능성이 큽니다 이제 기록을 중지하고 추적을 살펴보겠습니다 command, control, Z를 눌러 기록에 초점을 맞춥니다 추적 좌측의 펼침 삼각형을 클릭해 Power Profiler 추적을 확장합니다 Power Profiler로 시스템 수준 전력 지표와 앱별 전력 영향 지표 모두 확인할 수 있습니다 첫 행은 System Power Usage 행으로 전체적인 에너지 소비량을 표시합니다 값이 높을수록 앱이 더 많은 전력을 사용하고 있음을 뜻하죠 구간 선택 시, Summary 창에 평균값이 표시됩니다 추적에서 시간 구간을 선택해 보니 summary 창에 10.5%/hr가 표시됩니다 다음 단계는 앱의 전력 영향 지표를 검토하는 것입니다 다양한 하위 시스템과 관련된 여러 지표를 확인할 수 있죠 CPU, GPU, Display 및 Networking Power Impact가 있죠 CPU Power Impact 행이 중요한데 높은 CPU 활동은 전력 소모의 주요 요인이기 때문이죠 지속력 및 강도가 높은 CPU 사용량은 전력 소모를 늘립니다 Library 창을 열려고 한 직후 CPU 전력 영향에 급격한 증가가 발생했습니다 증가가 발생하기 전의 영역을 강조 표시하여 평균 CPU Power Impact 값을 확인해 보겠습니다 평균값은 1입니다 이제 급증이 발생한 부분을 강조 표시할게요 평균 CPU Power Impact 값은 21로 이전보다 현저히 높습니다 이 값을 통해 예상치 못한 전력 급증을 식별하고 가장 큰 영향을 받는 하위 시스템을 먼저 디버깅할 수 있습니다

    Time Profiler는 가장 많은 CPU 시간을 소비하는 기능을 Time Profiler는 가장 많은 CPU 시간을 CPU Profiler 클릭 및 앱 전용 코드 분석 집중을 위해 Call Tree 뷰를 확인하고 Hide System Libraries를 선택할게요 Heaviest Stack Trace 창에서 Instruments는 VideoCardView에서 상당한 시간이 소요되고 있음을 표시합니다 이 뷰의 body는 상대적으로 단순하므로 이 뷰가 자주 호출됨에 따라 문제가 발생했을 가능성이 큽니다 LibraryThumbnailView를 확인하죠 이 뷰에서 Library 창의 모든 비디오 섬네일을 생성해 문제의 원인일 가능성이 큽니다 Xcode로 돌아가, 뷰 내의 코드를 분석하겠습니다

    이 코드는 비디오 배열 전체에서 반복됩니다 비디오 섬네일을 만드는 VideoCardView를 생성하고 섬네일을 표시할 뷰를 생성합니다 이 모든 뷰는 VStack 내에 배치됩니다 수백 개, 수천 개의 비디오가 있다고 상상해 보세요 이 방식은 Library 창이 표시될 때마다 모든 섬네일을 로드하고 모든 뷰를 미리 생성하도록 앱에 강제합니다 화면에 실제로 표시되는지와 관계없이 말이죠 비효율적으로 Instruments에서 높은 CPU 사용량이 나타났습니다 불필요한 콘텐츠 로드 시, 앱에서 상당한 작업을 처리하죠 SwiftUI의 API인 LazyVStack은 이 상황에서 매우 효과적입니다 이 API는 현재 화면에 표시되거나 곧 표시될 항목의 뷰만 생성하고 렌더링합니다 최적화는 매우 간단합니다 VStack의 사용을 LazyVStack으로 교체하죠 같은 비디오 배열을 제공하지만 이 뷰에서 제가 스크롤하는 동안 항목의 생성과 삭제를 지능적으로 처리합니다 이제 이 최적화를 테스트해 보겠습니다 다시 Profile을 선택하고 기록을 시작할게요 그런 다음 기기에서 Library 창을 열겠습니다

    이제 앱이 반응하며 더 이상 멈추지 않습니다 기록 중단 후 CPU Power Impact 행으로 스크롤하죠

    평균값을 확인하기 위해 동일한 구간을 선택하겠습니다 평균값이 4.3으로, 기존 21에서 훨씬 낮아졌습니다 이렇게 CPU 회귀를 해결했죠 Library 창에서 미리 비디오 섬네일을 로드하는 게 불필요한 전력 소비의 원인으로 확인되었습니다 Instruments를 통해 비효율적인 코드를 정확히 찾고 온디맨드 로딩으로 전환해 기능의 성능을 상당히 개선할 수 있었죠 CPU 프로파일링 및 최적화 기술에 대해 자세히 알아보려면 이번 WWDC 영상인 ‘Instruments를 사용하여 CPU 성능 최적화하기’를 보세요 Power Profiler는 앱의 전력 소비에 관한 유용한 정보를 제공합니다 문제 발생 시 어떤 하위 시스템에 집중해야 할지 또는 무엇을 최적화해야 할지 확실하지 않을 때 활용하세요 Xcode에 iPhone을 연결해 프로파일링했죠 통제된 테스트에 효과적이지만 전체적인 상황을 보여주진 않죠 현장에서만 발생하는 문제는 어떻게 해결해야 할까요? 개발 환경에서 일관되게 재현할 수 없는 문제를 말하죠 예를 들자면, CarPlay 내비게이션 중에 앱이 실제로 어떻게 작동하나요? 야외에서 증강 현실 기능이 얼마나 전력을 소비하나요? 수 시간 후 백그라운드 배터리 사용량 문제는 디버깅은요? 품질 관리 팀이 현장 테스트로 얻은 실행 가능한 배터리 진단 정보를 쉽게 제공하는 방법은요? 문제 해결을 위해 Xcode에 직접 연결하지 않고도 실제 사용 경험에 관한 데이터를 얻을 방법이 필요합니다 Power Profiler는 온디바이스로 사용 가능하고 개발 중 재현할 수 없는 문제를 찾기 위해 활용할 수도 있습니다 구체적인 예를 들어 보죠 최근 한 동료가 심각한 배터리 수명 문제를 보고했습니다 Destination Video 앱의 배터리 사용량이 가장 높았죠 모든 걸 해봤으나 설정에서 문제를 재현할 수 없었습니다 다들 앱을 다르게 사용하므로 제가 아직 경험하지 못한 드문 상황을 동료가 발견한 것일 수도 있습니다 온디바이스 전력 프로파일링으로 동료의 기기가 필요하지 않죠 이 새로운 모드로 추적을 수집하고 파일을 저에게 보내달라고 요청하면 됩니다 이 데이터를 수집하는 것이 얼마나 쉬운지 보여드리죠 먼저 Xcode에 기기를 연결한 후 설정 앱에서 개발자 모드를 활성화합니다 그런 다음 개발자 설정에서 성능 추적을 선택합니다 활성화되면 Power Profiler를 켜는 옵션이 표시되죠 이 기능이 켜져 있는지 확인하세요 다음으로 프로파일링할 앱을 지정해야 합니다 Xcode TestFlight 또는 기업 프로그램으로 설치된 앱만 모니터링할 수 있습니다 목록에서 프로파일링할 앱을 선택하세요 좋습니다 이제 데이터 수집을 시작하세요 기기 우측 상단에서 아래로 스와이프해 제어 센터로 갑니다 성능 추적 아이콘을 사용하여 데이터 수집을 시작합니다 데이터 수집 추가 후 아이콘을 한 번 눌러 기록을 시작하세요 몇 시간 동안 실행하도록 두거나 문제를 재현할 수 있을 때까지 기다리면 됩니다 이제 수집을 중단하세요 제어 센터에서 성능 추적 아이콘을 다시 누릅니다 수집된 모든 전력 지표를 포함하는 추적 파일이 생성되며 Mac과 공유하고 바로 Instruments에서 열 수 있죠 끝났습니다 제 동료가 한 일인데 동료가 보낸 파일을 분석하며 근본 원인을 식별하는 방법을 보여드리겠습니다 Instruments로 파일을 엽니다 온디바이스 전력 추적을 통해 시스템 수준 전력 지표 앱별 전력 영향 지표 및 Time Profiler에 접근할 수 있죠 이 모드의 Time Profiler는 관찰자 효과 절감을 위해 샘플링 속도가 낮습니다 CPU Power Impact 행은 CPU 영향의 명확한 패턴을 보여주죠 CPU 영향이 뚜렷하게 높은 구간에 CPU 영향이 낮은 구간이 이어지는 현상이 주기적으로 반복되죠 Destination Video 앱에서 이런 현상이 나타나면 안 됩니다 영향이 높은 구간 중 하나를 확대하면 이 전력 사용량을 유발하는 요인을 확인할 수 있습니다 Time Profiler로 이 기간에서 실행되는 기능을 파악하겠습니다 videoSuggestionsForLocation이 CPU 시간을 제일 많이 소모합니다 이 함수는 위치를 기반으로 비디오를 추천하는 기능으로 주변 랜드마크나 행사에 관한 비디오를 추천하며 위치가 바뀔 때마다 호출됩니다 그래서 이 문제를 재현할 수 없었습니다 근무지에서는 제 위치가 잘 바뀌지 않으니까요 함수는 앱이 시작될 때 한 번 실행되고 대기 상태로 남습니다 하지만 제 동료는 출퇴근할 때 앱을 사용합니다 항상 이동하고 있죠 빈번한 위치 업데이트로 인해 과도한 필터링 프로세스가 반복적으로 트리거된 것입니다 Destination Video 앱을 빠르게 확인해 보죠

    Nearby Suggestions 창에 이 기능이 표시됩니다 여기에 위치 기반 추천이 표시되며 모두 같은 함수를 기반으로 작동합니다 문제의 원인인 함수를 발견했습니다 코드를 살펴보며 최적화할 방법을 보여드리겠습니다 videoSuggestionsForLocation은 위치 변경 시 호출되죠 표시할 관련 동영상 목록을 생성하는 역할을 합니다 현재 호출될 때마다 RecommendationRules 파일을 Data 객체를 대상으로 해 읽고 JSONDecoder로 RecommendationRule 맵으로 파싱하죠 이 JSON 파일은 수백 개의 복잡한 규칙을 포함하므로 큽니다 특히 파일이 큰 경우 파일 I/O와 JSON 파싱은 상당한 리소스를 소모합니다 앱은 위치가 변경될 때마다 이 모든 작업을 반복적으로 수행하고 있었습니다 문제의 원인이 분명하군요 규칙 자체는 앱이 실행 중일 때 변경되지 않습니다 따라서 기본적으로 규칙을 한 번만 늘어지게 로드 및 파싱한 다음 캐싱하도록 하여 최적화합니다 간단히 위치가 바뀔 때마다 수행되는 작업을 줄일 수 있죠 최적화를 추가로 진행한 후 앱 재테스트 요청을 해보죠 앱을 수정한 후에는 항상 다른 사람에게 동일한 조건에서 테스트하고 새로운 전력 추적을 수집하도록 요청하는 게 좋죠 원래 문제를 실제로 해결했는지 확인하는 완벽한 방법이죠 또한 앱을 수정하는 과정에서 실수로 다른 전력 문제를 일으키지 않았는지 확인할 수 있어 중요합니다 문제를 해결하고 최적화에 대한 신뢰를 높이는 데 유용합니다

    지금까지 기존 문제를 추적하는 방법을 다루었습니다 하지만 출시 전에 다양한 최적화 전략 중 자신 있게 선택하는 방법은 무엇일까요? CPU 사용량은 줄이지만 네트워크 활동을 약간 늘리는 방식으로 최적화해야 할 수 있습니다 배터리 수명에 미치는 전체적인 영향을 어떻게 알 수 있죠? 새 기능을 개발 중이라고 해 볼게요 구현을 제작했습니다 Approach 1이라고 하죠 간단하며 소량의 데이터로 테스트할 때는 효율을 보입니다 하지만 동료가 Approach 2를 제안합니다 이 구현은 다른 아키텍처로 설계되었으며 약간 더 복잡하고 작은 데이터 세트에서는 느리지만 대규모 데이터 처리에 훨씬 더 유연히 대응하도록 설계되었죠 이제 고민이 되죠 둘 중에 배터리 수명에 더 좋은 구현은 무엇일까요? 로컬 테스트나 코드를 점검하는 것만으로는 결정하기 어렵습니다 로컬 테스트는 처리되는 실제 데이터 크기나 네트워크 조건 백그라운드 활동이 성능에 미치는 영향을 반영하지 않을 수 있죠 이때 Power Profiler를 사용하여 두 구현의 영향을 비교할 수 있습니다 한 구현으로 앱을 프로파일링한 후 다른 구현으로 다시 프로파일링한 다음 결과를 비교할 수 있습니다 열, 기기 상태, 시스템 부하 조건이 최종 전력 소모량에 영향을 미칠 수 있다는 점을 기억하세요 관리되는 데이터 양, 활성화된 설정, 사용 중인 기능 등 앱의 상태도 영향을 미칩니다 이러한 변수 고려 시, 다양한 조건에서 각 접근 방식의 실행을 여러 번 캡처하고 결과의 평균을 구한 다음 이 데이터를 기능 및 구현 관련 결정을 내릴 때 참고하여 궁극적으로 앱을 최적화하고 최적의 경험을 제공할 수 있죠 Power Profiler는 여러 도구 중 하나일 뿐입니다 Xcode Energy Gauges로 코딩 중 즉각 피드백 받고 Instruments로 심층 분석을 수행하세요 자동화된 XCTest로 문제를 조기에 발견하세요 Xcode Organizer, MetricKit 및 App Store Connect API로 출시 후 현장에서의 영향을 모니터링하세요 이러한 도구는 에너지 효율을 달성하는 데 매우 효과적입니다 유용한 맥락과 정보를 제공하죠 도구를 효과적으로 활용하면 개발 절차에 강력한 에너지 효율 전략을 도입할 수 있습니다 전력 효율적 앱 빌드에 필요한 도구와 지식을 모두 갖췄습니다 Power Profiler를 조기에 자주 사용하고 데이터 기반의 결정을 내리고 배운 내용을 반복하세요 지금 바로 당신의 앱에서 추적을 만들고 결과 데이터를 살펴보세요 새로 배운 기술을 재미있는 방식으로 적용해 보세요 제가 준비한 내용은 여기까지입니다 시청해 주셔서 감사합니다

    • 0:00 - 인사말
    • 앱의 전력 최적화에 대해 알아보세요.

    • 1:52 - 재현 가능한 문제 디버깅하기
    • Instruments의 Power Profiler는 앱의 전력 소비 문제를 식별하는 데 유용한 도구입니다. Wiam은 새로운 라이브러리 창을 추가한 후 비디오 스트리밍 앱에서 성능 회귀를 조사하기 위해 이 도구를 사용하는 방법의 예를 살펴봅니다. 이 예제에서 Power Profiler는 라이브러리 창을 열 때 CPU 사용량과 전력 소비가 크게 증가하는 것을 보여 줍니다. Instruments의 추적을 분석하여 Wiam은 모든 비디오 섬네일을 미리 로드하는 비효율적인 코드에서 문제가 발생했음을 정확히 찾아냈습니다. 성능을 최적화하기 위해 ‘VStack’을 필요에 따라서만 뷰를 로드하는 ‘LazyVStack’으로 교체했습니다. 이러한 변경 사항을 구현한 후에는 앱의 응답성이 향상되고 CPU 전력에 미치는 영향이 크게 감소하는데, Power Profiler 도구가 성능 병목 현상을 식별하고 해결하는 데 효과적임을 보여 줍니다.

    • 9:37 - 숨겨진 문제 찾기
    • Power Profiler 툴을 사용하면 실제 앱 사용량에서 데이터를 수집할 수 있는데, 개발하는 동안 재현할 수 없는 문제를 식별하는 데 중요합니다. 예를 들어, 앱의 배터리 수명 문제는 야외에서 사용하거나 특정 내비게이션 시나리오에서 사용할 때만 나타날 수 있습니다. 이 툴을 사용하면 테스트 기기에서 원격으로 전력 측정 항목을 수집할 수 있습니다. 개발자 모드와 성능 추적을 활성화하면 테스터가 앱을 사용하는 동안 데이터를 기록할 수 있어 분석을 위해 여러분과 공유될 수 있습니다. 이 프로세스를 통해 Wiam은 반복적으로 리소스를 많이 사용하는 파일 I/O 및 JSON 구문 분석 작업을 수행하는 위치 기반 추천 기능으로 인해 발생한 앱의 배터리 수명 문제를 진단합니다. 이 함수를 최적화하여 데이터를 느리게 로드하고 구문 분석함으로써 앱의 전력 효율성이 개선되고 문제가 성공적으로 해결되었습니다.

    • 16:19 - 전력 사용량 비교하기
    • 두 가지 구현 방식으로 새로운 기능 개발 시, Power Profiler를 사용하여 배터리 수명에 미치는 영향을 비교하세요. 데이터 크기, 네트워크, 기기 상태 등의 변수를 고려하기 위해 다양한 조건에서 여러 테스트를 실행한 다음 결과의 평균을 내어 정보에 입각한 결정을 내립니다.

    • 18:25 - 선제적으로 최적화하기
    • Xcode, Instruments, 플랫폼 SDK는 Energy Gauges, Instruments, XCTest, Organizer, MetricKit, App Store Connect API 등의 툴 모음을 제공하여 개발 과정 전반에서 그리고 앱을 전달한 후에도 앱의 에너지 효율성을 모니터링하고 최적화할 수 있습니다.

Developer Footer

  • 비디오
  • WWDC25
  • 앱의 전력 사용량 프로파일링 및 최적화하기
  • 메뉴 열기 메뉴 닫기
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    메뉴 열기 메뉴 닫기
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    메뉴 열기 메뉴 닫기
    • 손쉬운 사용
    • 액세서리
    • 앱 확장 프로그램
    • App Store
    • 오디오 및 비디오(영문)
    • 증강 현실
    • 디자인
    • 배포
    • 교육
    • 서체(영문)
    • 게임
    • 건강 및 피트니스
    • 앱 내 구입
    • 현지화
    • 지도 및 위치
    • 머신 러닝 및 AI
    • 오픈 소스(영문)
    • 보안
    • Safari 및 웹(영문)
    메뉴 열기 메뉴 닫기
    • 문서(영문)
    • 튜토리얼
    • 다운로드(영문)
    • 포럼(영문)
    • 비디오
    메뉴 열기 메뉴 닫기
    • 지원 문서
    • 문의하기
    • 버그 보고
    • 시스템 상태(영문)
    메뉴 열기 메뉴 닫기
    • Apple Developer
    • App Store Connect
    • 인증서, 식별자 및 프로파일(영문)
    • 피드백 지원
    메뉴 열기 메뉴 닫기
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(영문)
    • News Partner Program(영문)
    • Video Partner Program(영문)
    • Security Bounty Program(영문)
    • Security Research Device Program(영문)
    메뉴 열기 메뉴 닫기
    • Apple과의 만남
    • Apple Developer Center
    • App Store 어워드(영문)
    • Apple 디자인 어워드
    • Apple Developer Academy(영문)
    • WWDC
    Apple Developer 앱 받기
    Copyright © 2025 Apple Inc. 모든 권리 보유.
    약관 개인정보 처리방침 계약 및 지침