Análisis del Mercado Cripto

Cómo Reducimos el Tiempo de Arranque de Android en un 30% con Perfiles Basales

Análisis del Mercado Cripto
We slashed Android startup time by 30% with baseline profiles

Descubre cómo Duolingo mejoró significativamente el rendimiento de su aplicación Android disminuyendo el tiempo de inicio en un 30% gracias a la implementación de perfiles basales y cómo esta tecnología revolucionó la experiencia de usuario, especialmente en dispositivos de gama baja.

En el mundo actual, la velocidad y la eficiencia de las aplicaciones móviles juegan un papel fundamental en la experiencia del usuario. Nadie disfruta esperar mientras una app tarda en abrirse, y esta realidad fue uno de los motores que impulsó a Duolingo a buscar soluciones innovadoras para optimizar su aplicación en Android. Gracias a la implementación de perfiles basales, conseguimos reducir el tiempo de apertura de nuestra app en un 30%, una mejora notable que no solo aumentó la satisfacción del usuario sino que también fortaleció el compromiso general con nuestra plataforma. Para entender el impacto de esta mejora, es fundamental conocer cómo funciona la compilación de código en aplicaciones Android. Las apps almacenan su código como bytecode en archivos dex, que el dispositivo debe compilar a código máquina para que la aplicación se ejecute.

Tradicionalmente, existen diferentes métodos de compilación en Android, cada uno con sus ventajas y desventajas. El proceso conocido como compilación Just-in-time (JIT) compila el código a medida que la aplicación se ejecuta. Es similar a tratar de entender un libro en un idioma extranjero en tiempo real, traduciendo palabra por palabra mientras lees. Este método es rápido para instalar y ahorra espacio, pero tiene el inconveniente de que el código optimizado solo existe temporalmente durante la ejecución y se pierde al cerrar la app, lo que puede ralentizar el inicio. En contraste, la compilación Ahead-of-time (AOT) compila todo el código durante la instalación, antes de que el usuario siquiera abra la aplicación.

Esta estrategia garantiza un rendimiento rápido al ejecutar la app, pero causa que la instalación sea mucho más lenta y aumente el uso de almacenamiento, lo cual puede afectar la adopción y experiencia en dispositivos con recursos limitados. La optimización guiada por perfiles, o Profile Guided Optimization (PGO), combina elementos de ambos procesos. Se basa en compilar just-in-time el código según se usa, pero guarda un perfil de las partes más utilizadas para compilarlas completamente en momentos de inactividad. Esto mejora el equilibrio entre rendimiento y uso de recursos, aunque los usuarios pueden enfrentar un período inicial de ralentización mientras el perfil se va construyendo. Las aplicaciones como Duolingo, que actualizan frecuentemente, enfrentan un desafío adicional con estas técnicas.

Los perfiles en la nube, que reúnen datos del uso de múltiples usuarios para precompilar código en futuras instalaciones, pueden tardar días en generarse y se restablecen con cada actualización, lo que limita su utilidad en aplicaciones con ciclos de lanzamiento rápidos. Aquí es donde los perfiles basales entran en juego. En lugar de depender de perfiles generados automáticamente luego del uso, los desarrolladores crean y envían un perfil predefinido con la aplicación. Esto equivale a entregar un vocabulario esencial para entender un libro desde el primer día, eliminando la dependencia de la recolección de datos de usuario y asegurando que el código crítico esté optimizado inmediatamente después de la instalación. Implementar perfiles basales en Duolingo no fue una tarea sencilla.

Aunque en teoría era un proceso relativamente directo, en la práctica nos encontramos con numerosos obstáculos técnicos que requirieron investigación y colaboración profunda con expertos y desarrolladores externos. Uno de los primeros problemas aparecieron durante las pruebas. Usamos la biblioteca macrobenchmark para medir el rendimiento, la herramienta recomendada para este tipo de optimizaciones. Sin embargo, un error en esta biblioteca complicó la ejecución adecuada de los tests, lo que nos llevó a probar la carga manual de perfiles basales y observar mejoras iniciales prometedoras. Pero, paradójicamente, los datos de rendimiento oficial no reflejaban estas ganancias.

Tras una serie de consultas con el equipo de expertos en perfiles basales de Google, descubrimos que nuestros perfiles estaban siendo invalidados durante el proceso de compilación. Este problema se originaba porque una biblioteca de terceros estaba modificando los archivos dex después de que el perfil se había convertido en formato binario, lo que impedía que el sistema los reconociera correctamente. Trabajamos estrechamente con los mantenedores de esta biblioteca para reproducir y diagnosticar el fallo. Tras resolver esta etapa, celebramos la que creímos era la victoria, pero pronto nos enfrentamos a un nuevo desafío cuando probamos la versión en formato Android App Bundle (AAB), nuestro método definitivo de distribución. Sorpresivamente, un segundo tercero provocaba un problema similar al intercambiar archivos dex durante el empaquetado, lo que invalidaba nuevamente los perfiles basales.

Al reportar este nuevo error, recibimos la noticia de que este bug afectaba configuraciones de apps poco comunes y no era prioridad para los desarrolladores del componente, lo que nos llevó a implementar una solución temporal que reconstruía los perfiles a partir de los archivos dex modificados para asegurar su validez. Con este gran impedimento superado, nos disponíamos a medir los resultados con la última versión de la herramienta macrobenchmark, que había sido actualizada para funcionar correctamente con perfiles basales. Sin embargo, el regreso de otro problema nos hizo conscientes de la complejidad del proceso: uno de los componentes de terceros estaba comprimiendo los perfiles basales, dificultando la ejecución de las pruebas y agregando sobrecarga al proceso de instalación. Esta circunstancia afectaba negativamente el desempeño en el arranque y exigía que intervinieramos con los responsables del componente. Tras varias conversaciones, lograron identificar la causa y prometieron un arreglo en la siguiente versión.

La llegada de esta actualización nos permitió ejecutar finalmente benchmarks confiables y confirmar las codiciadas mejoras en rendimiento. Los resultados superaron nuestras expectativas. La métrica principal, el tiempo de inicio de la aplicación, mejoró en promedio un 30%, con variaciones entre 25% y 40% según las pruebas macrobenchmark. Además, la carga en el hilo de compilación JIT disminuyó de estar ocupado un 25% de tiempo a solo un 3%, un indicador claro del menor trabajo que el dispositivo debe realizar durante el lanzamiento de la aplicación. Más allá del beneficio evidente en el arranque, notamos que la experiencia en diferentes áreas de la aplicación mejoró significativamente.

Por ejemplo, la fluidez en las lecciones de música aumentó al reducirse la 'jank' o interrupciones visuales, lo que contribuye a una sensación de aplicación más ágil y agradable. También nos abrió la puerta para adoptar tecnologías modernas como Jetpack Compose sin temer impactos negativos visibles en el rendimiento. Durante todo el proceso, aprendimos valiosas lecciones que pueden beneficiar a otros desarrolladores que busquen optimizar sus aplicaciones: En primer lugar, las pruebas de perfiles basales pueden resultar engañosas si no se replica con precisión el entorno de producción. Usar métodos de testeo no definitivos, como la carga manual de perfiles, puede producir resultados que no se reflejan en el producto final. Es crucial validar que los perfiles indicados sean compatibles con el proceso completo de compilación y empaquetado.

Segundo, la imposibilidad de realizar experimentos A/B con perfiles basales — porque se compilan en la instalación y no durante la ejecución — dificulta medir su efecto exacto en la experiencia de usuario real. Sin embargo, las herramientas de benchmarking macrobenchmark permiten validar la efectividad de las optimizaciones en un entorno controlado. La colaboración con expertos desde etapas tempranas se reveló esencial. La documentación limitada, combinada con errores sin resolver en herramientas y componentes relacionados, dificultó la identificación de los problemas genuinos. Contar con apoyo directo de los desarrolladores y expertos externos aceleró la resolución de obstáculos que de otra manera habrían retrasado el proyecto.

Por último, la dependencia de bibliotecas de terceros añadió una capa extra de complejidad. Aunque notificar estos problemas y colaborar con los responsables es imprescindibles para asegurar la calidad y sostenibilidad, es importante contar con soluciones temporales propias para seguir avanzando mientras se resuelven los conflictos externos. En conclusión, implementar perfiles basales en la aplicación Android de Duolingo supuso un desafío técnico significativo, lleno de pruebas, errores y adaptaciones. Pese a las dificultades, el resultado final demostró ser una inversión valiosa, al mejorar sustancialmente la rapidez con la que los usuarios pueden acceder al contenido y disfrutar de la plataforma. Estos avances son especialmente beneficiosos para usuarios con dispositivos de gama media o baja, donde las limitaciones de hardware amplifican el impacto de cada optimización.

Para desarrolladores y equipos de ingeniería que buscan elevar el rendimiento de sus aplicaciones, la experiencia con perfiles basales ofrece una hoja de ruta invaluable: preparar el entorno meticulosamente, anticipar la intervención de diversas dependencias, trabajar codo a codo con expertos y mantener la resiliencia frente a los contratiempos. Más que un simple ajuste técnico, es una apuesta estratégica por ofrecer excelencia desde el primer instante que el usuario toca la pantalla. Si te apasiona enfrentar esos retos y marcar la diferencia en la vida de millones de usuarios, el equipo de Duolingo está creciendo y busca nuevos talentos dispuestos a sumarse a esta aventura tecnológica. La optimización del rendimiento cambia vidas, y quizás la próxima gran innovación salga de tu teclado.

Trading automático en las bolsas de criptomonedas Compra y vende tu criptomoneda al mejor precio

Siguiente paso
Ellen Miles is planting seeds of hope through guerrilla gardening
el sábado 14 de junio de 2025 Ellen Miles y la revolución verde urbana: guerrilla gardening para transformar ciudades

Ellen Miles lidera un movimiento de guerrilla gardening en Londres, transformando espacios urbanos abandonados en oasis verdes que promueven la biodiversidad, mejoran la salud mental y fortalecen las comunidades.

Why Webull Corporation (BULL) Skyrocketed On Wednesday
el sábado 14 de junio de 2025 El Impresionante Ascenso de Webull Corporation (BULL) y su Impacto en el Mercado Financiero

Análisis detallado sobre el significativo aumento en las acciones de Webull Corporation (BULL), las causas detrás de esta subida y su relevancia en el contexto actual del mercado bursátil y tecnológico.

Trump’s next crypto play will be Monopoly-style game — Report
el sábado 14 de junio de 2025 El próximo movimiento cripto de Trump: un juego estilo Monopoly que fusiona gaming y criptomonedas

Explora cómo Donald Trump está expandiendo su incursión en el mundo de las criptomonedas con un innovador juego tipo Monopoly que combina elementos de blockchain y gaming, analizamos su impacto en el sector Web3 y las posibles implicaciones para el mercado.

Trump's crypto czar's 5-word verdict on tariff as stock market looks up
el sábado 14 de junio de 2025 El veredicto en cinco palabras del zar cripto de Trump sobre los aranceles mientras el mercado bursátil repunta

Un análisis en profundidad sobre la respuesta de David Sacks, conocido como el zar cripto de Trump, frente a la volatilidad causada por los aranceles y cómo la bolsa estadounidense muestra señales de recuperación después de un período turbulento.

Bank of England cuts interest rates and welcomes word of US-UK trade deal
el sábado 14 de junio de 2025 El Banco de Inglaterra Reduce las Tasas de Interés y Recibe con Optimismo el Acuerdo Comercial entre EE.UU. y Reino Unido

El Banco de Inglaterra ha decidido recortar las tasas de interés ante la incertidumbre económica global, mientras que el anuncio de un acuerdo comercial entre Estados Unidos y Reino Unido abre nuevas perspectivas para la economía británica en un contexto de tensiones comerciales internacionales.

Ask HN: Mobile devs – what do you hate about current mobile ad networks?
el sábado 14 de junio de 2025 Los desafíos ocultos de las redes de anuncios móviles para desarrolladores: transparencia, privacidad y control

Exploramos las principales frustraciones de los desarrolladores móviles con las redes de anuncios actuales, enfocándonos en aspectos como la transparencia, privacidad, experiencia del usuario y modelos de pago, y analizamos cómo una nueva generación de plataformas podría transformar este ecosistema.

Sofie: NRK's open-source web based system for automating live TV news production
el sábado 14 de junio de 2025 Sofie: La Revolución del Software Libre en la Producción de Noticias en Vivo de NRK

Descubre cómo Sofie, el sistema de automatización web de código abierto desarrollado por NRK, está transformando la producción de noticias en vivo, optimizando procesos y facilitando la innovación en la televisión pública noruega.