Ajuda para o MetaEditor

Profiling de Código

Criação de perfil de Código

A criação de perfil é um processo de recolha de características do aplicativo, tal como o tempo de execução de seus fragmentos individuais (funções ou linhas). O MetaEditor possui uma criação de perfil de código, permitindo ao programador o otimizar o código-fonte.

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.

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 dar imediatamente a carga pretendida e verificar o funcionamento dos programas, mesmo nos fins de semana, quando os mercados estão fechados.

Inicializando a criação de perfil

Para iniciar a criação de perfil de código, abra o código-fonte do aplicativo (mq5). No menu "Depurar" ou na barra de ferramentas "Padrão", clique em "Iniciar a criação de perfil sobre dados reais Iniciar a criação de perfil sobre dados reais" ou "Iniciar a criação de perfil sobre dados históricos 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 no terminal ou no testador de estratégias (modo visual).

O aplicativo é executado no gráfico EURUSD H1 por padrão. Para selecionar outro ativo e período, especifique-os na guia "Depuração" nas opções do MetaEditor.

Depois que o aplicativo for iniciado, você deve trabalhar com ele por algum tempo utilizando todas as suas funções ao máximo possível. Isso é necessário para permitir o criador de perfil medir as funções e o tempo de execução das linhas do aplicativo.

Em seguida, a criação de perfil deve ser parada usando o comando "Parar criação de perfil Parar criação de perfil" do menu "Depurar" ou da 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 perfilConcluir a criação de perfil".

Ver resultados da criação de perfil

Após a conclusão da criação de perfil, seus resultados serão exibidos na guia especial "Profiler" (criador de perfil) da janela "Caixa de Ferramentas". Dois modos de ver os resultados estão disponíveis. É possível alternar entre eles usando o menu contextual.

Modo "Funções por Chamadas"

Resultados da criação de perfil

Neste modo, os resultados da criação de perfil são apresentados por funções:

  • Função – função da classe ou nome do método.
  • Linha – a linha, em que a função é chamada. Se a função é chamada em vários locais do aplicativo, o seu ícone será marcado pelo símbolo especial Expandir. Clicando nele irá abrir os dados de cada chamada.
  • Contagem – número de chamadas da função durante todo o tempo da operação do aplicativo.
  • Tempo – tempo de execução da função em microssegundos e valores percentuais em relação a todo o tempo de execução das funções. O tempo de execução da função é a soma dos tempos de execução de todas as chamadas da função.
  • Gráfico – gráfico do tempo de execução da função.

Os tipos de funções são exibidos usando os ícones:

  • Função personalizada–  função personalizada;
  • Função do sistema – função do sistema;
  • Função de manipulação de eventos– função de manipulação de eventos (On*);
  • Método de classe– método de classe.

Para além dos tipos de funções mencionados, o criador de perfil também exibe:

  • Função do sistema@global_initializations – dados sobre toda a inicialização das variáveis ​​globais;
  • Função do sistema@global_deinitializations – dados sobre todas as finalizações das variáveis ​​globais;

Para visualizar uma função em um arquivo, dê um duplo clique nela.

O criador de perfil exibe apenas as funções que foram chamadas durante o funcionamento do aplicativo.

Modo "Funções por Linhas"

Resultados da criação de perfil

Neste modo, os dados sobre o tempo de funcionamento do aplicativo é representado por linhas. As linhas são agrupadas por funções do aplicativo.

  • Função – nome da função.
  • linha – índice da linha, da qual os dados são apresentados. Para visualizar os dados sobre o tempo de execução de cada linha da função, clique no ícone Expandir.
  • Contagem – o número de vezes que o código foi executado em uma linha específica.
  • Tempo – tempo de execução do código de uma linha, em microssegundos e em valores percentuais. Valores percentuais são exibidos para cada linha em relação ao tempo de execução da função. Valores percentuais para as funções são exibidos em relação a todo o tempo de execução do aplicativo.
  • Gráfico – gráfico do tempo de execução.

Para visualizar uma linha em um arquivo, dê um duplo clique nela.

Menu Contextual

Os seguintes comandos estão disponíveis no menu contextual:

  • Abrir – vai para uma linha ou uma função em um arquivo de código-fonte. A mesma ação pode ser executada com um duplo clique ou pressionando Enter.
  • Expandir Tudo – expandir todas as funções;
  • Recolher Tudo – recolhe todas as funções expandidas;
  • Funções por Linhas – muda para ver os resultados da criação de perfil em linhas;
  • Funções por Chamadas – muda para ver os resultados da criação de perfil por chamadas;
  • Exportar – exporta os resultados da criação de perfil em Open XML (MS Office Excel), HTML (Internet Explorer) ou CSV (arquivo texto).
  • Organizar Automaticamente – ativa/desativa o dimensionamento automático dos campos. A mesma ação pode ser feita pressionando "A";
  • Grade – exibe/oculta a grade para separar os campos. A mesma ação pode ser feita pressionando "G".