La compatibilidad con la optimización guiada por perfil se introdujo en la versión 22.2.71 de AGDE.
Ubica la configuración de la PGO
Abre la configuración del proyecto desde Solution Explorer.
Figura 1: Ventana del Solution Explorer de Visual Studio
Asegúrate de que tu plataforma esté establecida en una configuración de Android (por ejemplo, Android-arm64-v8a).
En el panel izquierdo, selecciona Configuration Properties > General. Busca el grupo de propiedades llamado PGO.
Figura 2: Diálogo "Project properties"
Cómo habilitar compilaciones instrumentadas de PGO en el proyecto
Agrega una nueva configuración a tu proyecto llamada Instrumented. Este proceso se basa en la configuración que usas durante el desarrollo para las pruebas, que debería ser tu compilación tradicional optimizada (también puedes tener funciones de depuración adicionales habilitadas siempre que conserves la configuración de optimización del compilador).
Haz clic en Configuration Manager… en el diálogo "Property page".
Figura 3: Diálogo "Configuration Manager"
En el cuadro de diálogo "Configuration Manager", selecciona la lista desplegable Active solution configuration y elige <New…>.
Figura 4: Creación de una nueva configuración de compilación
Crea una nueva configuración instrumentada de PGO.
Figura 5: Diálogo "New Solution Configuration"
Si quieres habilitar la compilación en modo de instrumentación de PGO, de modo que puedas generar un perfil para tu juego, selecciona Instrumented en la lista de opciones de Profile-Guided Optimization Mode.
Figura 6: Diálogo "Project Properties", en el que se destaca la configuración de PGO
En la opción Profile Guided Optimization Profiles, ingresa la ruta de acceso a la carpeta en la que se escribirá el archivo de datos de perfil de salida sin procesar en tu dispositivo Android.
Por lo general, este valor debe ser similar a /data/data/<package
name>/cache/
, en el que <package name>
es el nombre completo del paquete del APK, por ejemplo, com.google.sample.tunnel.
Para obtener información más detallada sobre su funcionamiento, consulta la documentación de Clang.
Cómo escribir en tu dispositivo datos de perfiles instrumentados con PGO
Los datos de la PGO suelen escribirse en el dispositivo con el sistema de instrumentación de PGO cuando finaliza un proceso. En Android, las apps no se cierran, siempre finalizan. Esto significa que la función predeterminada de escritura en el disco nunca se activa, lo que requiere que tu app escriba datos de PGO de forma manual.
Tu app debe llamar explícitamente a __llvm_profile_write_file
para escribir los datos del perfil. Este símbolo solo está disponible cuando se crea una compilación instrumentada con PGO. Para facilitar este proceso, te recomendamos que uses el siguiente patrón cuando declares __llvm_profile_write_file
.
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
Si llamas a esta función, se escriben los datos del perfil en la carpeta que especificaste con anterioridad.
Cómo ejecutar un perfil
Para generar el perfil, debes ejecutar tu APK compilado con la instrumentación de PGO en el dispositivo de destino. Una vez que hayas probado el código de manera satisfactoria y hayas activado la llamada a la función __llvm_profile_write_file
, tu app escribirá los datos de perfil en el almacenamiento.
En este punto, vuelve a copiar los perfiles del dispositivo para que los use el compilador.
Cómo preparar los datos del perfil para que los use el compilador
Cuando se usa de forma aislada, la herramienta de línea de comandos llvm-profdata
que se envía como parte de Clang/LLVM en el NDK de Android se usa para preparar archivos de datos de perfil con el objetivo de que los use el compilador durante la optimización guiada por perfil de una compilación.
AGDE realiza este paso automáticamente por medio de la combinación de cualquier archivo de datos de perfil que hayas agregado a tu proyecto y el consumo de estos cuando la configuración del modo de optimización guiada por el perfil en las páginas de propiedades del proyecto esté establecido como optimizado.
Cómo compilar tu proyecto con la optimización guiada por perfil habilitada
Ahora que capturaste tus perfiles y los agregaste a tu proyecto, el compilador puede usar esos datos para ajustar la optimización de la compilación.
Crea una configuración de proyecto nueva para tu compilación optimizada para PGO de modo que solo realices compilaciones en este modo cuando sea necesario.
Figura 7: Creación de una nueva configuración de compilación optimizada para PGO
Establece la configuración de Profile-Guided Optimization Mode en las páginas de propiedades del proyecto como Optimized.
Figura 8: Configuración del modo de optimización de PGO en "Optimized"
Copia los archivos del dispositivo y agrégalos a tu proyecto en el Solution Explorer. El compilador recogerá estos archivos de datos de perfil la próxima vez que compiles tu configuración optimizada para PGO y los usará para ajustar la forma en que el compilador optimiza tu código.
Puedes copiar los archivos de datos de perfil en tu proyecto desde el dispositivo con ADB o con el explorador de dispositivos Android.
Usa la optimización guiada por el perfil fuera de AGDE
Si usas un sistema de compilación que no es compatible con AGDE, es posible que debas editar tu compilación directamente. Clang
documentación
incluye los interruptores necesarios: -fprofile-generate
, y
-fprofile-use
Si usas un motor de middleware para tu juego, consulta la documentación de tu motor para ver cómo habilitar la PGO (si es compatible).