View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Videos

Abrir menú Cerrar menú
  • Colecciones
  • Temas
  • Todos los videos
  • Información

Más videos

  • Información
  • Resumen
  • Transcripción
  • Crear perfiles y optimizar el uso de energía en tu app

    Aprende a optimizar tu app para obtener la máxima duración de la batería. Descubre cómo identificar la causa raíz de los problemas de energía en tu app: ya sea que reproduzcas el problema mientras estás conectado a Xcode o sobre la marcha. Descubre cómo medir el consumo de energía para poder tomar mejores decisiones sobre las nuevas funcionalidades y crear apps más eficientes de forma proactiva.

    Capítulos

    • 0:00 - Te damos la bienvenida
    • 1:52 - Depurar problemas reproducibles
    • 9:37 - Descubrir problemas ocultos
    • 16:19 - Comparar el uso de energía
    • 18:25 - Optimizar de forma proactiva

    Recursos

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

    Videos relacionados

    WWDC25

    • Optimiza el rendimiento del CPU con instrumentos
  • Buscar este video…

    ¡Hola! Soy Wiam, ingeniera de software en Apple. Será un placer hablar contigo sobre la optimización energética.

    Está garantizado que ofreces experiencias de apps fantásticas y de alta calidad. A la gente le encantan las apps en las que puede confiar, y una parte crucial de esa confianza es la duración de la batería. Las apps de bajo consumo energético generan una mayor interacción y satisfacción, lo cual es realmente beneficioso. Pero una app que consume demasiada energía puede arruinar de inmediato esa experiencia positiva. ¿Y si te muestro un recurso secreto, una herramienta que te permite crear apps potentes y muy eficientes energéticamente? En este video, aprenderás cómo resolver problemas de energía a partir de esta herramienta. Pero antes, te contaré la rutina de hoy. Comenzaré abordando los problemas que puedes reproducir en tu escritorio. Voy a mostrarte un ejemplo práctico, veremos cómo identificar y reducir el consumo excesivo de energía.

    Luego te mostraré escenarios reales más desafiantes: los más difíciles de identificar. Verás cómo capturar datos en cualquier entorno.

    Luego, demostraré cómo comparar el consumo de energía de diferentes implementaciones. Una forma clara de medir y mejorar la eficiencia de tu app.

    Por último, explicaré cómo detectar de forma proactiva problemas de energía durante las primeras etapas del proceso de desarrollo y obtener una versión altamente optimizada de tu app.

    Quizás notaste un alto impacto energético en Xcode, lo que indica un problema, pero es difícil encontrar la causa raíz. En estas situaciones, lo que necesitas es la capacidad de ejecutar la app, reproducir el problema y registrar los datos.

    En Instruments, puedes encontrar Power Profiler: la herramienta perfecta para esto. Permite perfilar la app y registrar un seguimiento de energía que luego puede visualizarse en Instruments. Este es el problema que intento resolver en mi app. Estoy trabajando en Destination Video, una app de transmisión de video diseñada para ver contenido en iPhone y iPad. Para mejorarla, agregué un panel de Biblioteca para explorar fácilmente toda la colección de videos. Luego, revisé el informe de energía de Xcode Organizer, y vi un salto significativo en el uso del CPU. Esto se traduce en un rendimiento más lento y una menor duración de la batería. Usaré el Power Profiler en Instruments para investigar esta regresión. Primero, abriré el proyecto Xcode y conectaré mi iPhone de forma inalámbrica. Luego, iré al producto y haré clic en Profile. Esto compilará e instalará la app en mi dispositivo y abrirá Instruments. Selecciono la plantilla en blanco, elijo Power Profiler y CPU Profiler para capturar también información sobre el uso del CPU. Según lo que necesites, puedes elegir otros instrumentos. Usaré la configuración predeterminada y comenzaré a grabar.

    Ahora, iré al dispositivo y abriré el panel Library.

    También hay un bloqueo al abrir este panel, probablemente relacionado con el problema que estoy investigando. Ahora dejaré de grabar y examinaré el rastro. Me centraré en la grabación presionando Comando + Control + Z. Ampliaré el rastro Power Profiler haciendo clic en el triángulo de expandir a la izquierda. Con Power Profiler, tengo acceso a métricas de energía a nivel del sistema y a métricas de impacto de energía por app. El primer carril es el de uso de energía del sistema, que muestra una indicación general del consumo de energía. Cuanto mayor sea el valor, mayor es la energía que tu app está consumiendo. Puedes seleccionar una región e inspeccionar el valor promedio en el panel de resumen. Luego de seleccionar una región de tiempo en este seguimiento, el panel de resumen indica 10.5%/h. El siguiente paso es revisar las métricas de impacto de energía de mi app. Puedo inspeccionar varias métricas, relacionadas con diferentes subsistemas: el impacto en la potencia del CPU, el GPU, la pantalla y la red. El carril de impacto de energía del CPU es crucial porque la alta actividad del CPU es un factor importante en el consumo de energía. El uso sostenido o intenso del CPU aumenta directamente el consumo de energía. Un aumento repentino en el impacto de la energía del CPU ocurrió directamente después de que intenté abrir el panel Library. Antes resaltaré la región para poder determinar el valor de impacto de potencia de CPU promedio. El valor medio es uno. Ahora resaltaré el pico. El impacto promedio en la potencia del CPU es 21, mucho mayor que lo que era antes. Este valor es una puntuación que permite identificar cuándo ocurren picos inesperados y priorizar la depuración del subsistema de mayor impacto.

    Time Profiler ayuda a señalar el origen de esta sobrecarga de CPU al identificar qué funciones consumen más tiempo de CPU. Haré clic en CPU Profiler y, para centrar el análisis en el código específico de la app, examinaré la vista Call Tree y seleccionaré “Hide System Libraries”. En el panel Heaviest Stack Trace, Instruments indica que se está gastando un tiempo significativo en VideoCardView. Como el cuerpo de esta vista es relativamente simple, el problema probablemente surja por la frecuencia de la solicitud. Entonces, lo siguiente será revisar LibraryThumbnailView. Es el que crea todas esas miniaturas de videos en el panel Library, es muy probable que de ahí surja el problema. Volveré a Xcode para analizar el código dentro de esta vista.

    El código itera en todo el conjunto de videos. Para cada video, genera un VideoCardView que crea su miniatura y crea una vista para mostrarlo. Todas estas vistas se colocan luego dentro de un VStack. Imaginemos que hay cientos o incluso miles de videos. Esta estrategia obliga a la app a cargar cada miniatura y crear previamente cada vista en el momento en que el panel Library se vuelve visible, esté realmente o no en la pantalla. Esto es ineficiente y explica el alto uso de CPU que descubrí en Instruments. La app está realizando demasiado trabajo cargando contenido que aún no se necesita. Por suerte, SwiftUI ofrece una excelente API para esto: LazyVStack. Crea y renderiza las vistas de los elementos que están visibles actualmente o que están a punto de desplazarse para aparecer en la vista. Por lo que la optimización es sencilla. Reemplazaré el uso de VStack con LazyVStack. Le daré la misma variedad de videos, pero la vista es quien de manera inteligente maneja la creación y destrucción de las vistas de elementos a medida que me desplazo. Ahora voy a probar esta optimización. Haré clic en Profile y comenzaré a grabar. Luego, en mi dispositivo, abriré el panel Library.

    Mi app ahora responde, ya no se cuelga. Dejaré de grabar ahora y me desplazaré hacia abajo hasta el carril de impacto de la energía del CPU.

    Resaltaré la misma región para poder determinar el valor promedio. Ahora indica un promedio más pequeño: 4.3 en lugar de los 21 de antes. Esto es por la regresión del CPU. Se identificó que la carga anticipada de todas las miniaturas de video en el panel Library era la causa del consumo innecesario de energía. Instruments ayudó a identificar el código ineficiente, y cambiar a la carga a pedido hace que la función sea mucho más eficiente. Para entender mejor las técnicas de optimización y creación de perfiles de CPU, recomiendo ver el video “Optimize CPU performance with Instruments”. El generador de perfiles de energía ofrece información valiosa sobre el consumo de energía de tu app. Recuerda aprovecharlo siempre que creas que hay un problema y no sepas bien en qué subsistema centrarte o qué optimizar. Hasta ahora, creamos perfiles con mi iPhone conectado a Xcode. Esto es excelente para pruebas controladas, pero no siempre muestra la película completa. ¿Qué pasa con los problemas frustrantes que solo aparecen en la vida real? Aquellos que son imposibles de reproducir consistentemente en tu escritorio. Quizás te enfrentes a escenarios como: ¿Cómo se comporta realmente tu app durante la navegación con CarPlay? ¿O cuánta energía consume realmente tu función de realidad aumentada al aire libre? ¿Cómo depurar el uso de batería en segundo plano que tarda horas en aparecer? ¿Cómo puede tu equipo de calidad ofrecer fácilmente diagnósticos de energía procesables a partir de las pruebas de campo? Para resolver esto, necesito una forma de recopilar datos del uso en el mundo real, sin necesidad de una conexión directa a Xcode. El Power Profiler también está disponible en el dispositivo y se puede utilizar para encontrar problemas que no se pueden reproducir durante el desarrollo. Aquí va un ejemplo concreto: Mi compañero me informó algunos problemas graves con la duración de la batería: mi app Destination Video tiene el mayor consumo de batería de su dispositivo. Intenté todo, pero no pude reproducirlo en mi configuración. Las personas usan las apps de maneras diferentes, es posible que este sea un caso extremo que aún no había notado. Gracias al perfil de energía del dispositivo, no era necesario tener su dispositivo físicamente. Solo le pedí que recopilara un rastro usando este nuevo modo y me enviara el archivo. Te mostraré lo fácil que es recopilar estos datos. Primero, debes activar el modo de desarrollador en la app Configuración, que está disponible después de haber conectado tu dispositivo a Xcode. Luego, ve a Rastrear rendimiento en la configuración del desarrollador. Una vez que se activa Rastrear, aparece la opción para activar Power Profiler. Verifica que esta opción esté activada. Luego, debes especificar qué app quieres perfilar. Solo se pueden monitorear las apps instaladas mediante Xcode, TestFlight o mediante el programa empresarial. Selecciona tu app de la lista. ¡Excelente! Ahora, comienza la recopilación de datos. Desliza el dedo hacia abajo desde la esquina superior derecha de tu dispositivo para acceder al Centro de control. El ícono de rastreo de rendimiento se usa para iniciar la recopilación de datos. Toca el ícono una vez que lo agregaste para comenzar a grabar. Puedes dejar que esto se ejecute durante algunas horas o hasta que reproduzca el problema. Ahora, detén la recopilación. Toca el ícono de Rastrear rendimiento en el Centro de control. Esto genera un archivo de seguimiento que contiene todas las métricas de potencia recopiladas que luego puedes compartir con tu Mac y abrir directamente en Instruments. ¡Eso es todo! Esto es justo lo que hizo mi compañero, y ahora te mostraré cómo analizar el archivo que me envió para identificar la causa raíz. Abriré el archivo con Instruments. Con el seguimiento de energía en el dispositivo, tienes acceso a métricas de energía a nivel del sistema, métricas de impacto de energía por app y al generador de perfiles de tiempo. Time Profiler en este modo tiene una frecuencia de muestreo más baja para reducir el efecto del observador. El carril de impacto de energía del CPU revela un patrón claro de impacto del CPU, con áreas distintas de alto impacto seguidas de periodos de bajo impacto, que se repiten periódicamente. Eso no es lo que esperaba de la app Destination Video. Si hago zoom en una de estas áreas de alto impacto, puedo descubrir qué es lo que impulsa este consumo de energía. Consultaré Time Profiler para tener una idea de qué funciones se están ejecutando durante este periodo. videoSuggestionsForLocation entre las primeras, consumiendo un tiempo de CPU significativo. Esa función es parte de mi función para recomendar videos según la ubicación, sugerir videos sobre lugares de interés o eventos cercanos, y se activa siempre que cambia la ubicación. Eso explica por qué no pude reproducirlo. Desde mi escritorio, mi ubicación no cambia. Entonces, la función puede ejecutarse una vez cuando se inicia la app, pero luego solo permanece allí. Pero mi compañero usa la app mientras viaja: ¡se mueve todo el tiempo! Esas actualizaciones de ubicación activaban una y otra vez este pesado proceso de filtrado. Iré de inmediato a la app Destination Video.

    Esta función aparece en el panel Nearby Suggestions. Ahí es donde aparecen esas recomendaciones basadas en la ubicación, todas impulsadas por la misma función. Ahora sé qué función causa el problema. Iré al código y descubriré qué puedo hacer para optimizarlo. videoSuggestionsForLocation se activa cada vez que cambia mi ubicación. Es responsable de generar una lista de videos relevantes para mostrar. En este momento, cada vez que se activa, lee este archivo RecommendationRules en un objeto Data y luego usa JSONDecoder para analizarlo en el mapa RecommendationRule. Este archivo JSON no es pequeño: tiene cientos de reglas complejas. La entrada/salida de archivos y el análisis de JSON, especialmente para archivos grandes, son operaciones que consumen muchos recursos. La app realiza todo este trabajo pesado una y otra vez, cada vez que cambia la ubicación. Definitivamente es el origen del problema. Las reglas en sí no cambian mientras la app está en ejecución. Entonces, para una optimización debo cargar y analizar las reglas de manera diferida, solo una vez, y almacenarlas en caché. Este simple cambio reducirá el trabajo realizado durante cada actualización de ubicación. Le pediré a mi compañero que la pruebe nuevamente después de optimizarla aún más. Cada vez que realices una corrección como esta en tu propia app, siempre puedes pedirle a alguien que la pruebe en las mismas condiciones y obtenga un nuevo rastro de energía. Es la forma perfecta de confirmar que solucionaste el problema original y, verificar que no introdujiste accidentalmente un nuevo problema de energía al realizar el cambio. Te ayuda a resolver el problema y tener confianza en tus optimizaciones.

    Muy bien, vimos cómo rastrear problemas existentes. Pero ¿cómo elegir con seguridad entre diferentes estrategias de optimización antes de enviarlas? Tal vez una optimización implique un equilibrio entre un menor uso del CPU y más actividad de la red. ¿Cómo saber el efecto neto sobre la vida útil de la batería? Veamos un escenario común: estás desarrollando una nueva función. Ya tienes tu implementación: la llamaremos Estrategia 1. Es sencilla y parece eficiente cuando la pruebas con pequeñas cantidades de datos. Pero tu colega propone crear Estrategia 2. Está diseñado diferente, tal vez un poco más lento con pocos datos, pero maneja grandes cantidades de datos con mucha más elegancia. Ahora tienes un dilema: ¿Cuál es mejor para la duración de la batería? Si intentas decidir esto basándote solo en pruebas locales o inspeccionando el código es realmente difícil. Es posible que tus pruebas locales no representen los tamaños de datos típicos encontrados o cómo las condiciones de la red y la actividad de fondo afectan el rendimiento. Aquí es donde puedes aprovechar Power Profiler, específicamente para comparar el impacto. Puedes perfilar tu app con una estrategia, volver a perfilarla con la segunda y comparar estos valores. Ten en cuenta condiciones como la temperatura, el estado del dispositivo y la presión del sistema que pueden afectar la cantidad de energía que se usa en última instancia. Esto también incluye el estado de tu app como la cantidad de datos que administra, las preferencias activadas o las funciones habilitadas. Para esto, puedes, por ejemplo, capturar múltiples ejecuciones de cada estrategia en distintas condiciones y promediar los resultados; luego, usar esos datos para fundamentar tus decisiones en cuanto a las características e implementaciones, y por último, optimizar tu app para obtener la mejor experiencia. El Power Profiler es una de muchas herramientas que tienes en tu arsenal. Mientras codificas, obtén retroalimentación instantánea con los indicadores de energía de Xcode y realiza análisis profundos con Instruments. Con XCTests automatizado detecta los problemas de forma temprana. Luego del envío, revisa el impacto en el campo con Xcode Organizer, MetricKit y la API de App Store Connect. Estas herramientas son tus aliadas en la lucha por la eficiencia energética, te proporcionan contexto y conocimientos valiosos. Si los usas de manera eficaz, puedes incorporar una estrategia sólida de eficiencia energética a tu proceso de desarrollo. Tienes las herramientas y el conocimiento para crear apps energéticamente eficientes. Usa Power Profiler con frecuencia y de forma temprana, deja que los datos guíen tus decisiones e itera lo que aprendas. Te propongo un desafío: realiza un seguimiento de tu app ahora y examina los datos resultantes. Es una forma divertida de poner en práctica tus nuevas habilidades. Muy bien, esos son todos los consejos poderosos que tengo. ¡Gracias por estar ahí!

    • 0:00 - Te damos la bienvenida
    • Obtén información sobre la optimización de energía para las apps.

    • 1:52 - Depurar problemas reproducibles
    • Power Profiler de Instruments es una herramienta valiosa para identificar problemas de consumo de energía en las apps. Wiam trabaja con un ejemplo de cómo usar esta herramienta para investigar una regresión del rendimiento en una app de streaming de video luego de agregar un nuevo panel de biblioteca. En el ejemplo, Power Profiler revela un aumento significativo en el uso del CPU y el consumo de energía al abrir el panel de la biblioteca. Al dar seguimiento en Instruments, Wiam identificó el problema como un código ineficiente que cargaba todas las miniaturas de video por adelantado. Para optimizar el rendimiento, reemplazó “VStack” con “LazyVStack”, que solo carga las vistas cuando es necesario. Luego de implementar este cambio, la app se vuelve más receptiva y el impacto en el consumo de energía del CPU disminuye significativamente, lo que demuestra la eficacia del instrumento Power Profiler para identificar y resolver cuellos de botella en el rendimiento.

    • 9:37 - Descubrir problemas ocultos
    • Con la herramienta Power Profiler, puedes recopilar datos del uso de apps en el mundo real, algo fundamental para identificar problemas que no se pueden reproducir durante el desarrollo. Por ejemplo, los problemas de duración de la batería de una app pueden manifestarse solo cuando se usa al aire libre o durante escenarios de navegación específicos. Con esta herramienta puedes recopilar de forma remota métricas de potencia de los dispositivos de prueba. Cuando habilitas el Modo de desarrollador y el Seguimiento de rendimiento, los evaluadores pueden registrar datos mientras usan la app, que luego pueden compartir contigo para su análisis. A través de este proceso, Wiam diagnostica un problema de duración de la batería en la app causado por una funcionalidad de recomendación basada en la ubicación que realizaba repetidamente operaciones de análisis de JSON y E/S de archivos que consumían muchos recursos. Al optimizar esta función para cargar y analizar datos de forma diferida, se mejora la eficiencia energética de la app y el problema se resuelve con éxito.

    • 16:19 - Comparar el uso de energía
    • A la hora de desarrollar una nueva funcionalidad y enfrentarse a dos enfoques de implementación, usa Power Profiler para comparar el impacto en la vida útil de la batería. Ejecuta múltiples pruebas en diversas condiciones para tener en cuenta variables como el tamaño de los datos, la red y el estado del dispositivo, luego promedia los resultados para tomar una decisión informada.

    • 18:25 - Optimizar de forma proactiva
    • Xcode, Instruments y los SDK de la plataforma ofrecen un conjunto de herramientas ・€・ Energy Gauges, Instruments, XCTest, Organizer, MetricKit y la API de App Store Connect ・€・ para que monitorees y optimices la eficiencia energética de la app durante el desarrollo y después del envío de una app.

Developer Footer

  • Videos
  • WWDC25
  • Crear perfiles y optimizar el uso de energía en tu app
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • Icon Composer
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Store
    • Audio & Video
    • Augmented Reality
    • Business
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning & AI
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Sample Code
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • 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
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright © 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines