DirectX - página 10

 
Реter Konow:

Onde estão as mudanças na tabela? É redesenhado?

Sim, ele está sempre em movimento.

em geral, sem pausar o roteiro fez 3 testes

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) #1: loops=1000 ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: loops=10000 ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: loops=100000 ms=35812

1000 - 100 000 loops e atualizações de valor.... espantosamente, .Net + WinForm é bastante produtivo, mesmo para tarefas tão obscuras, nada fica parado mesmo no meu laptop

#import "LogToWinForm.dll"
#import

double price[20];

#define    SpeedTest(count_x10,msg,EX)        {uint mss=GetTickCount(); ulong count=(ulong)pow(10,count_x10);for(ulong ii=0;ii<count&&!_StopFlag;ii++){EX;} \
                                              printf("%s: loops=%i ms=%u",msg,count,GetTickCount()-mss);}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   ArrayInitialize(price, 1.0);
   while(!Log::InitForm()) Sleep(200);
   Sleep(1000);

   SpeedTest(3, "№ 1", sendTodl());
   SpeedTest(4, "№ 2", sendTodl());
   SpeedTest(5, "№ 3", sendTodl());
}
//+------------------------------------------------------------------+
void sendTodl()
{
   for(int i = 0; i < 19; i++)
   {
      price[i] = price[i + 1];
   }
   price[19] = NormalizeDouble(price[18] + _Point, _Digits);
   double ask = NormalizeDouble((double)rand() * _Point, _Digits);
   double bid = NormalizeDouble((double)rand() * _Point, _Digits);
   Log::PrintToLog(ask, bid, price);
};
//+------------------------------------------------------------------+

os valores de velocidade são iguais, acontece que 22 valores duplos (duplo, duplo duplo[]) lançados em .dll e atualizados completamente WinForms leva 0,3 ms

UPD: agora você pode ver que a esta velocidade de atualização a carga na CPU está presente


 
Igor Makanu:

Continua a ser redesenhado.

em geral, sem pausar o roteiro fez 3 testes

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) # 1: loops=1000 ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: loops=10000 ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: loops=100000 ms=35812

1000 - 100 000 loops e atualizações de valor.... espantosamente, .Net + WinForm é bastante produtivo, mesmo para tarefas tão obscuras, nada fica parado mesmo no meu laptop

os valores de velocidade são iguais, acontece que 22 valores duplos (duplo, duplo duplo[]) lançados em .dll e atualizados completamente WinForms leva 0,3 ms

UPD: agora você pode ver que tal velocidade de atualização coloca carga na CPU


Preciso escrever para a empresa microsoft)).

Eles têm uma carga maior de atualizações de tabela do que eu. Coloque o refresh a cada 16ms.



ZS. Construir uma mesa equivalente sobre sharpe. Interessante para comparar a carga.

Arquivos anexados:
GUI_Expert.ex5  600 kb
 
12 ms seria mais correto
 
Реter Konow:

Tenho que escrever para a empresa de microsoft)).

Eles têm uma carga mais pesada de atualizações de mesas do que eu. Configure-o para ser atualizado a cada 16ms.



ZS. Construir uma mesa equivalente sobre sharpe. Interessante para comparar a carga.

Escreva, mas tente 1 milhão de vezes para atualizar a tabela, ao trocar com a Net levou

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: loops=1000000 ms=322531

a atualização é menos de 16 ms para mim - escrevi acima de 0,3 ms

Mas note que esta é uma forma completamente independente (janela), ela recebe todos os eventos Win, então eu queria testá-la - eu estava me perguntando se o .Net fica pendurado em tal troca e fica tudo atrasado

ZS: amanhã talvez no PC para verificar este script lá mais poderoso que o processador do laptop, pelo menos o testador (o otimizador) é quase 3 vezes mais rápido que em um laptop, embora não faça sentido - rodar .Net é muito, muito bom

 
Igor Makanu:

mas tente 1 milhão de vezes atualizar a tabela, ao trocar com a Net levou

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: loops=1000000 ms=322531

Mas note que esta é uma forma completamente independente (janela), ela recebe todos os eventos Win, em geral, eu queria testá-la - era interessante se o .Net congelaria em tal troca e se tudo se atrasa

SZS: amanhã talvez no PC para verificar este script lá mais poderoso que o processador do laptop, pelo menos o testador (o otimizador) é quase 3 vezes mais rápido do que em um laptop, embora não haja sentido - rodar .Net é muito, muito bom

E por que atualizá-lo um milhão de vezes? Seria mais barato atualizar a tabela em tempo real às 16 ms. O resto é desnecessário porque o modelo do evento não é mais rápido. É sobre a carga ao ser redesenhada.

 
Реter Konow:

Por que atualizá-lo um milhão de vezes? Seria mais barato para nós atualizar a tabela em tempo real a 16ms. O resto é desnecessário porque o modelo do evento não é mais rápido. Estamos falando sobre a carga de redesenho.

Portanto, há muito pelo que lutar.

ZS: coloque a pausa em 16 ms, bem, o processador no pico é de apenas 1,5% da carga, aqui está pegando o momento, e note o processador do laptop!

Não estou interessado em argumentos, só queria verificar as capacidades da MQL5 + .Net - tudo funciona muito bem!

 
Igor Makanu:

então há algo a se esforçar.

SZY: faça uma pausa a 16 ms, o processador é apenas 1,5% da carga no pico, aqui está o momento, e note o processador do laptop!

Foi interessante verificar as capacidades da MQL5 + .Net - tudo funciona muito bem!

E por isso não o verificamos. Ou seja, ainda não os comparamos. Eu criei duas tabelas análogas - em MCL e Sharp e dou uma olhada na carga que é dada por cada uma delas ao redesenhar suas células a 16 msec. Na MKL eu providenciei uma mesa. Agora, precisamos do mesmo em Sharpe. E então se tornará claro quem está à frente.

Vou acrescentar que a tabela afiada deve ser conectada ao MT5 via dll e depois comparar.

 
Реter Konow:

Portanto, não verificamos. Ou seja, ainda não fizemos comparações. Precisamos criar duas tabelas semelhantes - em MKL e em Sharp e ver a carga que cada uma dá ao redesenhar suas células a 16ms. Na MKL eu providenciei uma mesa. Agora, precisamos do mesmo em Sharpe. E então se tornará claro quem está à frente.

Vou acrescentar que a tabela afiada deve ser conectada ao MT5 até a dll e depois comparar.

Eu não compro - eu sei que nada vai mudar, bem, 0,1ms será adicionado se você abrir 50-100 valores e preenchê-los na tabela para 3 colunas

você pode considerar que você derrotou a Microsoft e seu .Net ))))

ZS: Estou confortável que o código em .Net me levou 15 minutos para escrever, cerca de 50 linhas no total, funciona rápido, sem atrasos notados ;)

 
Igor Makanu:

Eu não compro - eu sei que nada vai mudar, bem, 0,1 ms será adicionado quando você enviar 50-100 valores e preenchê-los na tabela em 3 colunas

você pode considerar que você derrotou a Microsoft e seu .Net ))))

SZZY: Estou confortável, levei 15 minutos para escrever o código .Net, cerca de 50 linhas no total, funciona rápido, sem atrasos notados ;)

Não há vitória sem luta...))

Estou disposto a apostar que em breve vou vencer o designer de GUI da Sharp na velocidade da construção de GUI. Por saltos e limites.

Checou até o momento. Não está preparado para construções rápidas. Pena dele...)))

 
Реter Konow:

Acabei de dar uma olhada nisso. Ele não está enraizado na construção de velocidade. Piedade dele...))

Bem... você é um Peter lamer - e um raro naquele )))))

Sharp é o máximo próximo de C++, a diferença de produtividade, bem, máximo 5% e então pode não haver diferença na produtividade - leva muito tempo para escrever tarefas simples em C++, em Net todas as tarefas primitivas são feitas em uma hora - dia máximo ;)

Eu estava prestes a ficar ocupado, mas adicionei mais 2 colunas em três cliques e passei de MQL5 para .dll 3x50 = 150 duplas (3 arrays de 50)

mediu a velocidade agora - e tenha em mente que as barras de rolagem agora requerem recursos - WinForm completamente atualizado

aqui está o mesmo teste antes de 100 000 atualizações

2020.03.15 00:12:21.812 tst_T (EURUSD,H1) #1: loops=1000 ms=1610

2020.03.15 00:12:38.382 tst_T (EURUSD,H1) no.2: loops=10000 ms=16562

2020.03.15 00:15:19.642 tst_T (EURUSD,H1) #3: loops=100000 ms=161250

ou seja, WinForm on .Net na janela com barras de rolagem e tabela de 153 células no meu laptop atualizações em 1,6 ms

Arquivos anexados:
MQL5.zip  209 kb
Razão: