Necesitamos optimizar el procesamiento de texto para una aplicación C# Windows Forms que muestra una gran cantidad de cadenas pequeñas en una cuadrícula irregular. En cualquier momento, puede haber más de 5000 células visibles que se actualizan 4 veces por segundo. La familia de fuentes y el tamaño son consistentes en todas las celdas, aunque el color puede variar de una celda a otra, al igual que en negrita/cursiva/normal.API más rápida para representar texto en formularios Windows Forms?
que he visto información contradictoria en la web sobre TextRenderer.DrawText
vs Graphics.DrawString
ser el más rápido/mejor, lo que reduce a un GDI vs GDI+ comparación a nivel Win32.
También he visto resultados radicalmente diferentes en Windows XP vs. Windows Vista, pero mi objetivo principal es Windows XP. Los artículos que prometen grandes avances bajo WinFX y DirectX 10 no son útiles aquí :-)
¿Cuál es el mejor enfoque aquí? No tengo miedo de introducir una pequeña capa de C++/CLI y optimizar el manejo del contexto del dispositivo para obtener más rendimiento, pero me gustaría obtener un consejo definitivo sobre qué dirección tomar.
EDIT: Gracias por las respuestas iniciales. Intentaré una combinación de renderizado de mapa de bits de fondo y apego a las llamadas equivalentes de GDI.
La aplicación de muestra en el enlace del blog es la que utilicé cuando vi la gran diferencia entre Vista y XP: en mi PC Vista, GDI y GDI + eran iguales, mientras que en XP veo la diferencia de 6x que menciona el autor. . Este es probablemente un problema con el controlador de Vista, pero resalta algunas de las dificultades aquí, ¡gracias! –
Nota histórica: ExtTextOut solía ser la forma más rápida de dibujar un rectángulo sólido en algunas tarjetas/controladores :) –