velocidad una tiempo test saturada reducir rapido que pingdom paginas pagina mas las internet hacer google como chrome carguen carga acelerar performance mfc ribbon

performance - una - reducir tiempo de carga wordpress



cómo acelerar el tiempo de carga para la aplicación de cinta MFC (2)

Tengo una aplicación nativa MFC C ++ para la cual tengo una versión basada en UI de cinta y una versión basada en la barra de herramientas. Ambos EXEs tienen un tamaño similar (~ 30mb), pero ejecutar la versión basada en cinta toma alrededor de 25 segundos, mientras que la versión de la barra de herramientas tarda aproximadamente 5 segundos. Esto es solo para mostrar la ventana del marco con las herramientas. He perfilado el inicio de la versión basada en la interfaz de usuario de la cinta, y de hecho el tiempo se está gastando en CMFCRibbonBar::LoadFromResource y más abajo en

BOOL CMFCRibbonInfoLoader::LoadImage(CMFCRibbonInfo::XImage& image, BOOL bSingle) { '' '' '' image.m_Image.SetTransparentColor(GetGlobalData()->clrBtnFace); // 15% image.m_Image.SmoothResize(dblScale); // 64% '' }

Al profundizar, parece que se gasta mucho tiempo sombreando manualmente la barra de herramientas ~ 44% del tiempo total.

¿Hay alguna forma de acelerar este tiempo de carga, posiblemente configurando un esquema de dibujo no transparente? 25 segundos para ejecutar un programa parece un poco excesivo, esto es en un 8 core 4ghz AMD 8350 con la imagen EXE proveniente de un SSD.

Editar: Probé lo siguiente, lo que ayudó a comprender el problema, pero en realidad no proporciona una respuesta útil.

Después de hurgar, parece una llamada a afxGlobalData.EnableRibbonImageScale(FALSE); desactiva la escala pero puede dejar resultados pobres visualmente en algunos monitores. Si los tamaños de imagen son correctos para que comience el monitor, 40x40 píxeles en mi pantalla de 1920x1080, la escala también se omitirá. Todavía no lo he probado, pero me imagino que si especifica imágenes HDPI para todos los controles de cinta y tiene la suerte de obtener una escala de 1: 1 para sus imágenes HDPI, también se omitirá. La búsqueda del código fuente de MFC (/ Archivos de programa (x86) / Microsoft Visual Studio 14.0 / VC / atlmfc / include / afxglobals.h) para m_bIsRibbonImageScale y m_dblRibbonImageScale produce la mayor parte del código relevante.

Si las imágenes de los botones grandes no son 32x32, el editor de cintas parece tratarlas como estaban, y corta incorrectamente la base BMP. Así que cambiar el tamaño del botón BMP de base grande a 40x40 resultó en basura en la pantalla.

Editar: pensé que la respuesta de Vlad funcionaría, pero aparentemente el XML utilizado en un recurso de cinta MFC no es Ribbon XML. Vea la pregunta relacionada en MSDN aquí .

Editar discusión adicional en MSDN aquí


La página que especifica los recursos de la imagen de la cinta indica:

Para cualquier imagen, el tamaño exacto del píxel depende de la resolución de la pantalla, o de los puntos por pulgada (ppp), del monitor que se está utilizando. A 96 ppp, las imágenes grandes tienen un tamaño de 32x32 píxeles y las imágenes pequeñas tienen un tamaño de 16x16 píxeles. Los tamaños de imagen aumentan de forma lineal en relación con los ppp, como se ilustra en la siguiente tabla.

DPI Small Image Large Image 96 dpi 16x16 pixels 32x32 pixels 120 dpi 20x20 pixels 40x40 pixels 144 dpi 24x24 pixels 48x48 pixels 192 dpi 32x32 pixels 64x64 pixels

El marco Ribbon escala los recursos de imagen según sea necesario. Sin embargo, dado que el cambio de tamaño puede producir artefactos no deseados y la degradación de la imagen, se recomienda encarecidamente que la aplicación proporcione un pequeño conjunto de recursos de imágenes que abarquen varias configuraciones de dpi comúnmente utilizadas. Si no se encuentra una coincidencia exacta, la imagen más cercana se ampliará o reducirá.

Para facilitar esto, los recursos de imagen se pueden declarar en el marcado de la cinta utilizando un conjunto de elementos de imagen para cada elemento de comando. En tiempo de ejecución, el marco selecciona la imagen para mostrar en función del atributo MinDPI de cada elemento de imagen.

Hay un ejemplo en la parte inferior.


Problema resuelto: Configuración -> Herramienta de manifiesto -> Entrada y salida -> Habilitar conciencia de DPI NO

NO, es la solución. El valor predeterminado es lamentablemente SÍ.