Sobre o profiler do código MT5 - página 6

 
fxsaber #:

Eu simplesmente não entendo porque as cordas de 45% e o resto não são levadas em conta?

Elas incluem aquelas funções nativas, sobre as quais escrevi.

RefreshHistory consiste em HistorySelect e HistoryOrderGet, GetHistoryPositionData - a partir deles + HistoryDealGet.

Ele também ajuda a percorrer o código com os olhos e analisar as linhas mais vermelhas. Entretanto, nem sempre são destacados, se o código for um pouco mais complexo do que uma folha.

 
fxsaber #:

29,41% (não está claro o porquê) é devido a um parêntese de fechamento após o retorno. Difícil de interpretar.

Remoção de variáveis de funções locais, objetos locais, etc.

Isto é feito após qualquer retorno de função.

 
Andrey Khatimlianskii #:

Remoção de variáveis de funções locais, objetos locais, etc.

Isto é feito após qualquer retorno da função.

Há apenas três variáveis ulong.

 
fxsaber #:

Acrescentei uma repetição de 20x sobre a grande história.

29,41% (não está claro o porquê) é devido a um parêntese de fechamento no método já após o retorno. Difícil de interpretar.

O que há no relatório para esta função?

Você pode me mostrar, por favor

 
Ilyas #:

O que está no relatório para esta função ?

Por favor, mostre-me

Relatório MQL Profiler - MQL5Experts\Test19.mq5
Função Linha Total de CPU Porcentagem Auto CPU Porcentagem
MT4ORDERS::GetHistoryPositionData 1093 701
85.38%
260
31.67%
} 1360 157
21.96%
157
60.38%
vazio estático GetHistoryPositionData( const ulong Ticket ) 1093 46
6.43%
46
17.69%
const string StrComment = ::HistoryDealGetString(OpenTicket, DEAL_COMMENT); 1178 23
3.22%
11
MT4ORDERS::Order.Comment = ::HistoryDealGetString(Ticket, DEAL_COMMENT); 1107 20
10


Não tenho certeza se esta informação é necessária. Infelizmente, eu ainda não entendo muito bem os números. Eu gostaria de entender isso.


SZY Há duas linhas na tabela acima com a mesma Linha=1093. Talvez quais dados de reprodução a serem fornecidos no PM?

 
fxsaber #:

Há apenas três variáveis ulong.

E tudo o que é chamado a partir desta função.

O tempo de execução da função A contém o tempo de execução de todas as funções B, que são chamadas de A. Exceto quando B é chamado de algum outro lugar (então apenas parte do tempo de B irá para A).

 
Andrey Khatimlianskii #:

E tudo chamado a partir dessa função.

O tempo de execução da função A contém o tempo de execução de todas as funções B, que são chamadas de A. Exceto quando B é chamado de algum outro lugar (então apenas parte do tempo de B vai para A).

Referia-me ao suporte de fechamento.

 
fxsaber #:

Referia-me aos parênteses finais.

Era isso que eu queria dizer).

Talvez eu mesmo esteja entendendo mal alguma coisa.

 

Diário de teste (sem visualização) depois que o perfilador estiver funcionando.

2021.11.08 03:21:54.358 Core 1  EURUSD,M1: 6820008 ticks, 258262 bars generated. Environment synchronized in 0:00:00.018. Test passed in 0:00:22.853 (including ticks preprocessing 0:00:01.219).
2021.11.08 03:21:54.358 Core 1  EURUSD,M1: total time from login to stop testing 0:00:22.871 (including 0:00:00.018 for history data synchronization)
2021.11.08 03:21:54.358 Core 1  disconnected
2021.11.08 03:21:54.358 Core 1  1578 Mb memory used including 24 Mb of history data, 192 Mb of tick data


Imediatamente depois, o botão Start no Testador é pressionado à mão.

2021.11.08 03:23:00.166 Core 1  EURUSD,M1: 6820008 ticks, 258262 bars generated. Environment synchronized in 0:00:00.029. Test passed in 0:00:07.548 (including ticks preprocessing 0:00:01.203).
2021.11.08 03:23:00.166 Core 1  EURUSD,M1: total time from login to stop testing 0:00:07.577 (including 0:00:00.029 for history data synchronization)
2021.11.08 03:23:00.166 Core 1  444 Mb memory used including 24 Mb of history data, 192 Mb of tick data


  1. Por que o tempo de execução é três vezes maior durante a elaboração do perfil?
  2. Por que o consumo de memória é três vezes maior durante a elaboração do perfil?
 

O perfilador mostra chamadas de função que não aconteceram de fato. Eu até já me deparei com algo assim:

Algum tipo de ArrayCopy, que não está na fonte do arquivo mqh! Eu até desenhei uma linha vermelha na declaração de uma matriz estática.

Infelizmente, ainda não posso usar o perfilador.