Skip to main content
En este tema se describe cómo usar las optimizaciones guiadas por perfiles (PGO) para juegos implementados y en ejecución en un kit de desarrollo XBOX Series X o un kit de desarrollo XBOX One. PGO es una tecnología de optimización del compilador en tiempo de ejecución que usa datos de generación de perfiles recopilados mientras se ejecutan escenarios de usuario importantes o centrados en el rendimiento para compilar una versión optimizada del título. Las optimizaciones guiadas por perfiles tienen ventajas significativas frente a las optimizaciones estáticas tradicionales porque se basan en cómo es probable que se use el título en un entorno comercial. PGO favorece la velocidad en las rutas de código correspondientes a escenarios de usuario comunes y favorece el tamaño en los escenarios de usuario poco comunes. El resultado es un código más rápido para los escenarios comunes y un código más pequeño para los escenarios usados con menos frecuencia. Las mejoras de rendimiento de PGO varían según el título, pero puede esperar mejoras del 5 al 30 por ciento. Tenga en cuenta que PGO no aborda el rendimiento de las partes de la aplicación centradas en la GPU.

Creación de una compilación instrumentada

El entrenamiento con PGO se basa en una compilación del título que contiene la instrumentación de PGO. PGO usa esta instrumentación para determinar qué rutas de código se ejecutan con más frecuencia. Lo único que necesita hacer para crear una compilación instrumentada es establecer dos propiedades de compilación en Visual Studio.

Para crear una compilación instrumentada

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y, a continuación, seleccione Propiedades.
  2. En el cuadro de diálogo Páginas de propiedades, expanda los nodos Propiedades de configuración y C/C++.
  3. Seleccione la página de propiedades Optimización y, a continuación, establezca Optimización de todo el programa en (figura 1). Figura 1. Establecimiento de la propiedad Optimización de todo el programa. Captura de pantalla que muestra la ubicación de la propiedad Optimización de todo el programa
  4. Expanda el nodo Vinculador.
  5. Seleccione la página de propiedades Optimización y, a continuación, establezca Generación de código en tiempo de vínculo en Optimización guiada por perfiles - Instrumentar (figura 2). Figura 2. Establecimiento de la propiedad Generación de código en tiempo de vínculo para una compilación instrumentada. Captura de pantalla que muestra la ubicación de la propiedad Generación de código en tiempo de vínculo, configurada para crear una compilación instrumentada [!NOTE] Las dos propiedades descritas en este procedimiento corresponden al modificador del compilador /GL y al modificador del vinculador /LTCG:PGInstrument en MSBuild.
  6. Compile e implemente la compilación instrumentada en la consola XBOX One. Con el título en ejecución, puede ver que los archivos de PGO se implementan como parte del título, de forma similar a la figura 3. Figura 3. Los archivos de PGO implementados por una compilación instrumentada. Captura de pantalla del directorio de la CLI que muestra los archivos de PGO implementados

Implementación de los archivos necesarios

El Microsoft Game Development Kit (GDK) incluye tres archivos que deben implementarse con el título para usar PGO. Un archivo, denominado psapi.dll, se instala en C:\Program Files (x86)\Microsoft GDK\edition\GXDK\bin. Los otros dos, denominados pgort140.dll y pgosweep.exe, provienen de la instalación de Visual Studio. Si usa MSBuild para compilar el título, estos archivos se copian automáticamente en el directorio Layout al crear una compilación instrumentada. Si usa makefiles para compilar el título, debe agregar manualmente estos tres archivos al directorio Layout para que se implementen con el título. En Visual Studio, agregar estos archivos al proyecto y excluirlos de la compilación es una forma cómoda de conseguir que los archivos se copien en el directorio Layout y se implementen con el título.

Para agregar los archivos necesarios al proyecto de Visual Studio

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto, seleccione Agregar y, a continuación, seleccione Elemento existente (figura 4). Figura 4. Adición de los archivos de PGO a un proyecto. Captura de pantalla que muestra cómo agregar un archivo a un proyecto
  2. Vaya a C:\Program Files (x86)\Microsoft GDK\edition\GXDK\bin, seleccione el archivo de PGO (psapi.dll) y, a continuación, seleccione Agregar para agregar el archivo al proyecto.
  3. Vaya a C:\Program Files (x86)\Microsoft Visual Studio\2019\edition\VC\Tools\MSVC\version\bin\Hostx64\x64\onecore -o bien- C:\Program Files\Microsoft Visual Studio\2022\edition\VC\Tools\MSVC\version\bin\Hostx64\x64\onecore según su conjunto de herramientas y seleccione los archivos de PGO (pgort140.dll y pgosweep.exe). A continuación, seleccione Agregar para agregar los archivos al proyecto.
  4. En el Explorador de soluciones, haga clic con el botón derecho en pgort140.dll y, a continuación, seleccione Propiedades.
  5. En el cuadro de diálogo Páginas de propiedades, expanda el nodo Propiedades de configuración y, a continuación, seleccione la página de propiedades General.
  6. Establezca Excluido de la compilación en y, a continuación, establezca Tipo de elemento en No participa en la compilación (figura 5). Figura 5. Exclusión de un archivo de PGO de las compilaciones. Captura de pantalla que muestra cómo excluir un archivo de PGO de las compilaciones
Los archivos de PGO ahora se copiarán en el directorio Layout y se implementarán con el título.

Entrenamiento con la compilación instrumentada

El entrenamiento es la fase más importante de PGO. Las mejoras de rendimiento que obtenga con PGO son una función directa de lo bien que se entrene la aplicación. Para la fase de entrenamiento de PGO, ejercite los escenarios comunes centrados en el rendimiento con el título en ejecución. Después de ejercitar los escenarios de rendimiento comunes, inicie la recopilación de un archivo de artefacto de PGO (.pgc), que captura los datos de entrenamiento. Use pgosweep.exe para generar el archivo .pgc (figura 6). Figura 6. Ejecución de pgosweep.exe. En este ejemplo, creamos un archivo .pgc denominado Direct3DGame1!1.pgc. Al crear un archivo .pgc, normalmente usamos la convención titlename!#.pgc, donde titlename es el nombre del título en ejecución y # es 1 más el número de archivos titlename!#.pgc que haya creado anteriormente. Cada ejecución de pgosweep.exe crea un archivo .pgc independiente. Lo ideal es crear numerosos archivos .pgc que representen varios escenarios centrados en el rendimiento. Cuando termine de crear los archivos .pgc, puede verlos en el directorio D:\ de la consola (es decir, SystemScratch), de forma similar a la figura 7. Figura 7. Archivos .pgc con nombres secuenciales. A continuación, debe combinar los archivos .pgc en otro artefacto de PGO conocido como archivo .pgd. El compilador usa el archivo .pgd durante la última fase de PGO, la optimización. Antes de iniciar la optimización, copie los archivos .pgc de la consola de vuelta al equipo mediante xbcp.exe. Los archivos .pgc deben copiarse en el directorio de salida de la compilación. (En la figura 8, el directorio de salida de la compilación es C:\temp\Direct3DGame1\Gaming.Xbox.XboxOne.x64\Release.) Figura 8. Copia de los archivos .pgc en el directorio de salida de la compilación.

Creación de la compilación optimizada

Para crear la compilación optimizada, establezca la propiedad Generación de código en tiempo de vínculo en Optimización guiada por perfiles - Actualizar (figura 9). Figura 9. Establecimiento de la propiedad Generación de código en tiempo de vínculo para una compilación optimizada.
Esta propiedad corresponde al modificador del vinculador /LTCG:PGOptimize en MSBuild.
Después de recompilar el título, la salida de la compilación incluye mensajes relacionados con PGO, similares a los de la figura 10. Figura 10. Mensajes relacionados con PGO en la salida de la compilación.

Recomendaciones de PGO para XBOX

Las instrucciones anteriores proporcionan información general para usar PGO en el Microsoft Game Development Kit (GDK) en XBOX mediante las propiedades de proyecto integradas de Visual Studio. Sin embargo, el compilador de Visual C++ ha dejado en desuso el uso de PGO a través de los modificadores /LTCG:PGInstrument, /LTCG:PGOptimize y /LTCG:PGUpdate, que son los que controlan las propiedades de proyecto de Visual Studio en Visual Studio 2019 y Visual Studio 2022. Los reemplazos preferidos son los siguientes.
  • Para el compilador de C/C++, use /GL (propiedad Optimización de todo el programa establecida en Sí (/GL), como se mostró anteriormente en la figura 1).
  • Para el vinculador, use /LTCG (propiedad Generación de código en tiempo de vínculo establecida en Usar generación de código en tiempo de vínculo (/LTCG), como se muestra en la figura 11). Figura 11. Establecimiento de la propiedad Generación de código en tiempo de vínculo. Captura de pantalla que muestra la ubicación de la propiedad Generación de código en tiempo de vínculo
A continuación, use uno de los siguientes modificadores nuevos del vinculador agregándolo al cuadro Opciones adicionales de la página de propiedades Línea de comandos:

Solución de problemas de PGO

Rendimiento en tiempo de ejecución

Al generar el perfil de una compilación instrumentada, las herramientas pueden causar problemas de rendimiento. Estos problemas pueden hacer que el título sea difícil de controlar. El modificador /FASTGENPROFILE es una buena opción para hacer que una compilación instrumentada sea más rápida al generar perfiles de sesiones de juego interactivas.

Dependencias

Si habilita la instrumentación de PGO y luego descubre que el título ya no se carga, compruebe que pgort140.dll y vcruntime140.dll estén en la misma carpeta que el archivo .exe del título. Si el intento de ejecutar pgosweep.exe produce un error (normalmente con un error STATUS_DLL_NOT_FOUND), compruebe que pgort140.dll, psapi.dll y vcruntime140.dll estén presentes en la misma carpeta que el archivo .exe del título. Asegúrese también de que está usando la versión x64 onecore de pgort140.dll y pgosweep.exe.

Uso de memoria

PGO usa memoria para capturar el perfil, lo que puede ser un desafío para un título que usa una parte significativa de la memoria disponible. Para realizar PGO correctamente, es posible que necesite usar la configuración ExtraTitleMemory en xbconfig.exe, la función XMemTransferMemory, o ambas. Usar /FASTGENPROFILE en lugar de /LTCG:PGInstrument o /GENPROFILE produce una superficie de memoria menor con un resultado similar. [!NOTE] La versión de PGO que se incluye en el GDK de junio de 2020 (y sus QFE) usa memoria del título. PGO se actualizará para usar correctamente la memoria de herramientas en una versión futura.

Consulte también

Optimización guiada por perfiles Desarrollo de juegos para consola XBOX (entorno y herramientas)
Última modificación el 28 de agosto de 2026