A criação de perfil é a coleção das características do programa durante sua execução. Ao criar o perfil, são medidos o tempo de execução e o número de chamadas de funções e linhas individuais no código do programa. Com essa ferramenta, o programador pode encontrar as seções mais lentas do código e otimizá-las.
O processo de criação de perfil pode ser realizado num gráfico habitual - na plataforma de negociação -, bem como nos dados do histórico usando o testador de estratégias. No primeiro caso, o programa será executado no gráfico, que, por sua vez, é atualizado em tempo real. Você poderá verificar como o programa irá se comportar em condições de uso do mundo real. No segundo caso, o programa será executado no testador de estratégias no modo visual. A vantagem deste método é que você não precisa esperar a entrada de dados reais a partir do servidor de negociação ou a ocorrência de certas condições de negociação.
Muitos programas, especialmente os indicadores, realizam cálculos apenas quando chega um novo tick (OnTick, OnCalculate). Assim, para avaliar o desempenho, é necessário aguardar a entrada de novos ticks em tempo real. Usando a criação de perfis em dados históricos, você pode imediatamente fornecer a carga correta e verificar o trabalho dos programas mesmo nos fins de semana, quando os mercados estão fechados.
Para criação de perfil agora é usado o método "Sampling". O criador de perfil faz uma pausa durante a operação de um programa MQL (~10 000 vezes por segundo) e coleta estatísticas sobre quantas vezes ocorre uma pausa em uma seção específica do código. Isso inclui a análise de pilhas de chamadas para determinar a "contribuição" de cada função no tempo total de operação do código. No final da criação de perfil, você obtém informações sobre quantas vezes há uma pausa e quantas vezes cada uma das funções acaba na pilha de chamadas:
Sampling – este é um método leve e preciso. Ao contrário da versão anterior, o novo criador de perfil não faz nenhuma alteração no código analisado que possa afetar sua velocidade de trabalho.
Por padrão, o programa é inciado no gráfico aberto atual na plataforma de negociação. No caso de criação de perfil com base em dados históricos, são usadas as configurações atuais do testador de estratégia. Nas configurações do MetaEditor você pode definir qualquer outro gráfico e substituir algumas configurações de teste.
Aqui você pode ativar ou desativar o inlining (incorporação) de funções ao realizar a compilação. Durante o inlining, o código das funções é colocado diretamente no local onde são chamadas, o que permite uma aceleração significativa do programa. No entanto, isso torna difícil a criação de perfil de funções. Para obter um relatório sobre funções "puras", você pode desativar o inlining.
Esta opção desativa apenas inlining explícito. As funções geradas implicitamente pelo compilador podem permanecer. Elas serão exibidas com o prefixo [inlined] no relatório.
Para aumentar o detalhamento do relatório de criação de perfil, você pode desativar o modo de otimização de código. Sem otimização, a velocidade do código pode cair exponencialmente, mas em troca, você pode ver uma cobertura de código mais ampla. Ao usá-lo leve em consideração que afunilamentos de código serão imprecisos.
A capacidade de gerenciar a otimização de código também está nas configurações do projeto.
Abra o arquivo do código fonte do programa (MQ4 ou MQ5). No menu "Depurar" ou na barra de ferramentas "Padrão" clique "I niciar a criação de perfil sobre dados reais" ou " Iniciar a criação de perfil sobre dados históricos".
Depois disso, será compilada automaticamente uma versão especial do programa para a criação de perfis. Dependendo do tipo de criação de perfil selecionado, o programa será executado num gráfico convencional na plataforma de negociação ou no testador de estratégias (no modo visual).
|
Após a execução, experimente algum tempo com o aplicativo, aproveitando ao máximo todas as suas funções. Isso é necessário para que o criador de perfil possa medir o tempo de execução de todas as funções e linhas do programa.
Em seguida, interrompa a criação de perfil: remova o programa do gráfico ou clique em " Concluir a criação de perfil" do menu "Depurar" ou na barra de ferramentas "Padrão".
Recomenda-se remover manualmente o programa a partir do gráfico em vez de usar o comando, para obter resultados mais precisos de criação de perfis " Concluir a criação de perfil". |
Após a conclusão da criação de perfil, seus resultados serão abertos na guia "Criador de perfil" da janela "Caixa de Ferramentas". Além disso, para maior clareza, os resultados são exibidos diretamente no código – destacando linhas com funções. Quanto mais brilhante a cor da luz de fundo, mais tempo demorava para concluir a função. Dessa forma, você pode avaliar de forma rápida e visual os gargalos do programa.
O relatório de perfil é apresentado como funções ou linhas de programa que dispõem de dois indicadores:
Como indicador, são exibidas a quantidade absoluta e a porcentagem do total.
Por padrão, a lista mostra funções grandes localizadas nos níveis superiores. Para ir para as menores, clique duas vezes na linha.
O relatório de perfil pode ser visualizado em dois modos: por chamadas e por linhas. O segundo método permite que você explore com o máximo de detalhes – para encontrar não apenas as funções mais lentas, mas também suas partes mais lentas. Use o menu de contexto para alternar entre os modos.
Por conveniência, vários elementos da linguagem MQL são exibidos no relatório como ícones:
Além desses tipos de funções, o criador de perfil exibe:
O número da linha e o caminho para o arquivo onde a função está localizada podem ser visualizados passando o cursor do mouse sobre a linha no relatório. Para visualizar a função no arquivo, clique duas vezes nele.
O criador de perfil não exibe todas as funções, mas sim apenas aquelas que foram chamadas durante o funcionamento do programa. |
Os seguintes comandos estão disponíveis no menu de contexto: