Lona vs Rótulos - página 9

 
A saída de texto para a etiqueta é 100 vezes mais rápida do que a saída de texto para a tela, mesmo que a tela nem sequer tenha sido limpa, ela estava esculpindo o texto sobre o texto.
 
Alexey Viktorov:

Dimitri, antes de julgar algo, você precisa entender onde tudo começou...

Se não me engano, algures ao longo da linha dizia cinquenta linhas...

Por onde tudo isso começou? Com uma pausa da realidade?

 
Dmitry Fedoseev:
É 100 vezes mais rápido emitir texto para etiquetar do que para kanvas, mesmo que a kanvas nem sequer fosse limpa, ela estava esculpindo texto sobre texto.

Apresentarei testes em breve, onde Kanvas também é rápido o suficiente. E também vou atualizar o código fonte relevante em KB. Trata-se de limitar o número de atualizações por unidade de tempo, como descobri mais tarde. Veja os postos acima, foi discutido lá. Comece com este post: https://www.mql5.com/ru/forum/364640/page6#comment_21290218.

 
Mihail Matkovskij:

Apresentarei testes em breve, onde Kanvas também é rápido o suficiente. E também vou atualizar o código fonte relevante em KB. Trata-se de limitar o número de atualizações por unidade de tempo, como descobri mais tarde. Veja os postos acima, foi discutido lá. Comece com este post: https://www.mql5.com/ru/forum/364640/page6#comment_21290218.

E eu não estou fantasiando, estou medindo o desempenho do código que se aplicaria na realidade. E eu não me importo em nada com o que e onde ele é entregue, estou medindo o tempo final de execução do programa.

 
Mesmo uma comparação puramente idiota de apenas uma chamada para TextOut() é 70 vezes mais lenta do que a saída de texto para a etiqueta.
 
Dmitry Fedoseev:

E eu não estou fantasiando, mas medindo o desempenho do código que seria aplicado na realidade.

Dmitry Fedoseev:
Mesmo uma comparação puramente idiota de apenas uma chamada para TextOut() é 70 vezes mais lenta do que a saída de texto para a etiqueta.

Se você não quer ou não consegue entender, aqui está uma citação:

Renat Fatkhullin:

Nikolai está certo - as propriedades de edição da etiqueta não tem nada a ver com a renderização da etiqueta.

A etiqueta, como qualquer outro objeto no gráfico, é desenhada em uma linha totalmente diferente e independentemente da operação do programa MQL5. O robô só pode pedir que o gráfico seja renderizado novamente com força, mas não pode medir o tempo de renderização. O desenho da carta com objetos é completamente assíncrono.

Mas a renderização da tela é fácil de medir, pois é feita diretamente no fluxo do robô e depois, durante a renderização independente do gráfico, resta fazer um BitBlit nativo do bitmap pronto no contexto da janela. Esta operação é elementar e é bem acelerada pela placa de vídeo.

Nas etiquetas de texto SetFont/TextOut em fontes TTF é bastante caro.
 
Mihail Matkovskij:

Se você não quer ou não consegue descobrir, você recebe uma cotação:

E eu já lhe respondi aqui

 
Dmitry Fedoseev:

E eu já lhe respondi aqui

Você vai discutircom o diretor da MetaQuotes?

 
Mihail Matkovskij:

Você vai discutircom o diretor da MetaQuotes?

Não temos nenhuma discordância.

 
Dmitry Fedoseev:
Mesmo uma comparação puramente idiota de apenas uma chamada para TextOut() é 70 vezes mais lenta do que a saída de texto para a etiqueta.

Isto porque a renderização do gráfico é feita em uma linha separada. Considerando que o processamento da matriz de pixels paraOBJ_BITMAP_LABEL está na mesma linha da aplicação que o utiliza, bem como a passagem dos pixels para o bitmap. Portanto,OBJ_BITMAP_LABEL pode atrasar a aplicação, mas não significativamente se o bitmap não for atualizado com muita freqüência. Apenas em meus testes anteriores, OBJ_BITMAP_LABEL causou desacelerações significativas pelo mesmo motivo. Mas se você limitar a freqüência de atualização do bitmap, o resultado é ainda melhor do que com rótulos. E se você limitar a taxa de atualização do bitmap, ele será ligeiramente mais rápido queOBJ_BITMAP_LABEL (devido à renderização em um fio separado).Simplesmente, não faz sentido atualizar objetos com mais freqüência do que o olho humano pode perceber. Daí os atrasos, todos os objetos do gráfico quando você os atualiza com demasiada freqüência.