![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Dimitri, antes de julgar algo, você precisa entender onde tudo começou...
Por onde tudo isso começou? Com uma pausa da realidade?
É 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.
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.
E eu não estou fantasiando, mas medindo o desempenho do código que seria aplicado na realidade.
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:
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.Se você não quer ou não consegue descobrir, você recebe uma cotação:
E eu já lhe respondi aqui
E eu já lhe respondi aqui
Você vai discutircom o diretor da MetaQuotes?
Você vai discutircom o diretor da MetaQuotes?
Não temos nenhuma discordância.
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.