Erros, bugs, perguntas - página 975

 

Estou corrigido. O desempenho do bitmap é inferior aos tags em 16%-25%(dependendo do número de elementos), mas não por uma ordem de grandeza, como escrevi anteriormente.

Houve provavelmente erros/ineficiências no código aquando da primeira aprendizagem da ferramenta.

O código está anexado.

portagem64

Acreditem,não tenho um único motivopara vos enganar = a mim mesmo. Na minha primeira experiência, observei um mapa amargo no testador. Infelizmente, não o consigo reproduzir. :(

Arquivos anexados:
 
voix_kas:

...

portagem64

Acreditem,não tenho um único motivopara vos enganar = a mim mesmo. Na minha primeira experiência, observei o mapa amargo no testador. Infelizmente, não o consigo reproduzir. :(

Ok. Vamos esperar que os criadores implementem esta funcionalidade e depois vamos testá-la devidamente. )))
 

Gostaria também de chamar a atenção dos criadores para as diferenças na exibição das fontes:


À esquerda está o bitmap e à direita os rótulos.O bitmap tem uma interpretação ligeiramente mais ousada da fonte, embora todas as definições sejam as mesmas.

A questão não é crítica. Mas para a ordem preste atenção. :)

 
voix_kas:

Gostaria também de chamar a atenção dos criadores para as diferenças na exibição das fontes

À esquerda está o bitmap, à direita os rótulos.O bitmap tem uma reprodução ligeiramente mais ousada da fonte, embora todas as definições sejam as mesmas.

A questão não é crítica. Mas para a ordem é necessário prestar atenção. :)

E que bandeira para definir a espessura da fonte utilizou para o bitmap?
 
voix_kas:

Estou corrigido. O desempenho do bitmap é inferior aos tags em 16%-25%(dependendo do número de elementos), mas não por uma ordem de grandeza, como escrevi anteriormente.


não. No entanto, o seu teste está incorrecto.

Utiliza-se ChartRedraw após cada mudança. Assim, de facto, está a testar 10000 vezes o ChartRedraw. Isto não é correcto.

A tarefa é descobrir o que muda mais rapidamente - rótulos ou bitmaps. E não a sua produção subsequente na tabela.

Aqui estão os resultados dos testes se deixar ChartRedraw dentro de um laço.

Tempo de actualização do bitmap = 40980.
Tempo para actualizar as etiquetas = 41777.

(ou seja, o bitmap é até ligeiramente mais rápido do que os rótulos).

E quero que note que o número de etiquetas e a largura do bitmap na presença de ChartRedraw dentro do laço - não afecta nada. Portanto, a função ChartRedraw é a mais lenta nesta situação.

---

Se remover o ChartRedraw do laço, obterá números completamente diferentes

Tempo de actualização do bitmap = 5788.
Hora de actualização das etiquetas = 234.

por isso o terminal com as etiquetas é 20 vezes mais rápido do que o bitmap


e aqui, é claro, já podemos ver a dependência da altura do bitmap. para 100 marcos:

Tempo de actualização do bitmap = 51355.
Tempo de actualização dos rótulos = 1108.
50 vezes a diferença

e aqui está um bitmap com o tamanho 250*20. ou seja, não alterar as coordenadas das marcas.

obtemos

Tempo de actualização do bitmap = 25054.

A diferença com cem marcos é de 25 vezes.


Assim, como se pode ver, o bitmap é realmente lento no que diz respeito a trabalhar com ele.

sem ambiguidade, esse trabalho cíclico constante com arrays + WinGdi TextOut + criação de ResourceCreate = inferior aos objectos MT nativos por pelo menos uma ordem, ou mesmo 50 vezes.

É por isso que não se deve recusar a objectos MT. Como provavelmente será muito conveniente para desenhar gráficos e histogramas.

Документация по MQL5: Операции с графиками / ChartRedraw
Документация по MQL5: Операции с графиками / ChartRedraw
  • www.mql5.com
Операции с графиками / ChartRedraw - Документация по MQL5
 
tol64:
E que bandeira para definir a espessura da fonte utilizou para o bitmap ?

O valor por defeito é 0, não o defino explicitamente. Pode vê-lo no código fonte em anexo.

O "jogo" adicional com bandeiras diferentes também não levou à uniformidade.

 
sergeev:

...

O objectivo é descobrir se os rótulos ou bitmaps se modificam mais rapidamente. Não a sua produção subsequente ao gráfico.

...

A remoção da função ChartRedraw() do laço está incorrecta, porque a "operação atómica" da modificação das propriedades do rótulo de texto não é de modo algum manipulada pelo vídeo-motor do terminal.

Apenas quando se chama ChartRedraw() a janela inteira é desenhada, incluindo sobreposição mútua de imagens de canais alfa de diferentes objectos.

Esta hipótese é estritamente confirmada pelo profiler de código no guião com etiquetas de texto.

Quanto ao bitmap, o estrangulamento é a função TextOut().

 
voix_kas:

...

Quanto ao bitmap, o estrangulamento é a função TextOut().

Isso é mais claro: ))

 
tol64:

Esta é a forma de o tornar mais claro: ))

Concordo. :)

sergeev:

...

aqui estão os resultados dos testes se deixar ChartRedraw dentro do laço.

Tempo de actualização do bitmap = 40980.
Tempo para actualizar as etiquetas = 41777.

(ou seja, o bitmap é mesmo ligeiramente mais rápido do que as etiquetas)

Estranho, eu tenho a imagem oposta:

 

Argb_normalize é melhor não ser utilizado, uma vez que dá um custo extra para a normalização da cor. É melhor pintar coisas simples em cores puras.

Também a velocidade é directa e fortemente influenciada pela placa de vídeo, uma vez que estamos a fazer pleno uso das suas características 2D. Por exemplo, em computadores portáteis fracos com placas gráficas rudimentares , a renderização é lenta e a diferença nos métodos de saída é grande.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5