Lienzo vs. Etiquetas - página 9

 
La salida de texto a la etiqueta es 100 veces más rápida que la salida de texto al lienzo, aunque el lienzo ni siquiera se estaba despejando, estaba esculpiendo el texto sobre el texto.
 
Alexey Viktorov:

Dimitri, antes de juzgar algo hay que entender dónde empezó todo...

Si no me equivoco, en algún lugar de la línea decía cincuenta líneas...

¿Dónde empezó todo? ¿Con un descanso de la realidad?

 
Dmitry Fedoseev:
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.

 
Mihail Matkovskij:

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.

 
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.
 
Dmitry Fedoseev:

Y no estoy fantaseando, sino midiendo el rendimiento del código que se aplicaría en la realidad.

Dmitry Fedoseev:
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:

Renat Fatkhullin:

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.
 
Mihail Matkovskij:

Si no quieres o no puedes entenderlo, te dan un presupuesto:

Y ya te he contestado aquí

 
Dmitry Fedoseev:

Y ya te he contestado aquí

¿Vas a discutircon el director de MetaQuotes?

 
Mihail Matkovskij:

¿Discutiráscon el director de MetaQuotes?

No tenemos ningún desacuerdo.

 
Dmitry Fedoseev:
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.

Razón de la queja: