![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Dimitri, antes de juzgar algo hay que entender dónde empezó todo...
¿Dónde empezó todo? ¿Con un descanso de la realidad?
La salida de texto a etiqueta es 100 veces más rápida que la salida de texto a kanvas, a pesar de que kanvas ni siquiera estaba limpiando, estaba esculpiendo texto sobre texto.
Pronto presentaré pruebas en las que Kanvas también es bastante rápido. Y también actualizaré el código fuente correspondiente en KB. Se trata de limitar el número de actualizaciones por unidad de tiempo, como descubrí después. Ver los mensajes anteriores, se discutió allí. Empieza con este post: https://www.mql5.com/ru/forum/364640/page6#comment_21290218.
Pronto presentaré pruebas en las que Kanvas también es bastante rápido. Y también actualizaré el código fuente correspondiente en KB. Se trata de limitar el número de actualizaciones por unidad de tiempo, como descubrí después. Ver los mensajes anteriores, se discutió allí. Empieza con este post: https://www.mql5.com/ru/forum/364640/page6#comment_21290218.
Y no estoy fantaseando, estoy midiendo el rendimiento del código que se aplicaría en la realidad. Y no me importa en absoluto qué y dónde se renderiza, estoy midiendo el tiempo de ejecución final del programa.
Y no estoy fantaseando, sino midiendo el rendimiento del código que se aplicaría en la realidad.
Incluso una comparación puramente tonta de una sola llamada a TextOut() es 70 veces más lenta que la salida de texto a la etiqueta.
Si no quieres o no puedes entenderlo, aquí tienes una cita:
Nikolai tiene razón - la edición de las propiedades de la etiqueta no tiene nada que ver con la representación de la etiqueta.
La etiqueta, como cualquier otro objeto del gráfico, se dibuja en un hilo totalmente distinto e independiente del funcionamiento del programa MQL5. El robot sólo puede pedir que se vuelva a renderizar el gráfico a la fuerza, pero no puede medir el tiempo de renderización. El dibujo de gráficos con objetos es completamente asíncrono.
Pero el renderizado del lienzo es fácil de medir ya que se hace directamente en el flujo del robot y luego durante el renderizado independiente del gráfico queda por hacer un BitBlit nativo del mapa de bits listo en el contexto de la ventana. Esta operación es elemental y está bien acelerada por la tarjeta de vídeo.
En las etiquetas de texto SetFont/TextOut en las fuentes TTF es bastante caro.Si no quieres o no puedes entenderlo, te dan un presupuesto:
Y ya te he contestado aquí
Y ya te he contestado aquí
¿Vas a discutircon el director de MetaQuotes?
¿Discutiráscon el director de MetaQuotes?
No tenemos ningún desacuerdo.
Incluso una comparación puramente tonta de una sola llamada a TextOut() es 70 veces más lenta que la salida de texto a la etiqueta.
Esto se debe a que la representación del gráfico se realiza en un hilo separado. Mientras que el procesamiento de la matriz de píxeles paraOBJ_BITMAP_LABEL está en el mismo hilo que la aplicación que lo utiliza, así como el paso de los píxeles al mapa de bits. Por lo tanto,OBJ_BITMAP_LABEL puede ralentizar la aplicación, pero no significativamente si el mapa de bits no se actualiza con demasiada frecuencia. Justo en mis pruebas anteriores, OBJ_BITMAP_LABEL causó ralentizaciones significativas por la misma razón. Pero si se limita la frecuencia de actualización del mapa de bits, el resultado es aún mejor que con las etiquetas. Y si se limita la tasa de actualización del mapa de bits, será ligeramente más rápido queOBJ_BITMAP_LABEL (debido a la renderización en un hilo separado).Sencillamente, no tiene sentido actualizar los objetos con más frecuencia de la que el ojo humano puede percibir. De ahí los retrasos, todos los objetos del gráfico cuando se actualizan con demasiada frecuencia.