---
title: "Criação de perfil de código - Desenvolvimento de programas - Ajuda para o MetaEditor"
description: "A criação de perfil é a coleção das características do programa durante sua execução. Ao... - Criação de perfil de código - Desenvolvimento de programas - Ajuda para o MetaEditor"
image: "https://www.metatrader5.com/i/logo_metatrader5.png"
url: "https://www.metatrader5.com/pt/metaeditor/help/development/profiling"
---

[Ajuda para o MetaEditor](https://www.metatrader5.com/pt/metaeditor/help) → [Desenvolvimento de programas](https://www.metatrader5.com/pt/metaeditor/help/development) → Criação de perfil de código

# Criação de perfil de código

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.

## Como funciona a criação de perfil

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:

- Atividade total da CPU [unidade de medida, %] – número total de "aparições" de uma função na pilha de chamadas.
- Atividade intrínseca da CPU [unidade de medida, %] – número de "pausas" que ocorrerem diretamente na função especificada. Este contador é mais importante para identificar gargalos, uma vez que, de acordo com as estatísticas, a parada ocorre com mais frequência nas partes do programa que requerem mais tempo de CPU.

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.

## Configurações de perfil

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](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#debug) você pode definir qualquer outro gráfico e substituir algumas configurações de teste.

![Depuração](https://www.metatrader5.com/i/help/metaeditor/en/settings_debug.png)

Aqui você pode ativar ou desativar o [inlining](https://ru.wikipedia.org/wiki/??????????????_???????????) (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](https://www.metatrader5.com/pt/metaeditor/help/mql5storage/projects#properties).

- Se a otimização estiver desabilitada no projeto, a nova opção será ignorada, uma vez que para criação de perfil, a otimização está sempre desabilitada (incluindo inlining).
- Se a otimização estiver habilitada no projeto, a nova opção será considerada na compilação para o perfil.

## Iniciar criação de perfil [#](#start)

Abra o arquivo do código fonte do programa (MQ4 ou MQ5). No menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug) ou na barra de ferramentas ["Padrão"](https://www.metatrader5.com/pt/metaeditor/help/toolbar/toolbar_standard) clique "![Iniciar criação de perfis em dados reais](https://www.metatrader5.com/i/help/metaeditor/en/start_profiling_icon.png)I niciar a criação de perfil sobre dados reais" ou "![Iniciar criação de perfil em dados históricos.](https://www.metatrader5.com/i/help/metaeditor/en/start_profiling_history_icon.png) 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).

![Execução da criação de perfil no gráfico na plataforma de negociação](https://www.metatrader5.com/i/help/metaeditor/en/profiling.png)

> Por padrão, o aplicativo é iniciado no gráfico EURUSD H1. Para executar num símbolo e período diferentes, especifique-os na aba ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/beginning/settings#debug) nas opções do MetaEditor.Ao criar o perfil com base no histórico, é sempre usado o modo de testador não visual. O modo visual praticamente não faz sentido, já que os principais recursos são gastos em desenho, e não em cálculos dentro do programa MQL.

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 "![Encerrar criação de perfil](https://www.metatrader5.com/i/help/metaeditor/en/stop_profiling_icon.png) Concluir a criação de perfil" do menu ["Depurar"](https://www.metatrader5.com/pt/metaeditor/help/main_menu/main_menu_debug) ou na barra de ferramentas ["Padrão"](https://www.metatrader5.com/pt/metaeditor/help/toolbar/toolbar_standard).

> 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 "![Encerrar criação de perfil](https://www.metatrader5.com/i/help/metaeditor/en/stop_profiling_icon.png) Concluir a criação de perfil".

## Exibindo resultados de criação de perfil

Após a conclusão da criação de perfil, seus resultados serão abertos na guia ["Criador de perfil"](https://www.metatrader5.com/pt/metaeditor/help/workspace/toolbox#profile) 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:

- Atividade total da CPU [unidade de medida, %] – número total de "aparições" de uma função na pilha de chamadas.
- Atividade intrínseca da CPU [unidade de medida, %] – número de "pausas" que ocorrerem diretamente na função especificada. Este contador é mais importante para identificar gargalos, uma vez que, de acordo com as estatísticas, a parada ocorre com mais frequência nas partes do programa que requerem mais tempo de CPU.

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.

![Resultados da criação de perfil](https://www.metatrader5.com/i/help/metaeditor/en/toolbox_profiler.png)

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:

- ![Função personalizada](https://www.metatrader5.com/i/help/metaeditor/en/function_icon.png) – função personalizada.
- ![Função de sistema](https://www.metatrader5.com/i/help/metaeditor/en/function_system_icon.png)– função de sistema.
- ![Função de processamento de eventos](https://www.metatrader5.com/i/help/metaeditor/en/function_event_icon.png) – função de processamento de eventos (On*).
- ![Método de classe](https://www.metatrader5.com/i/help/metaeditor/en/class_public_method_icon.png) – método de classe.
- ![Método protegido de classe](https://www.metatrader5.com/i/help/metaeditor/en/class_method_protected_icon.png) – método protegido de classe

Além desses tipos de funções, o criador de perfil exibe:

- ![Função de sistema](https://www.metatrader5.com/i/help/metaeditor/en/function_system_icon.png)@global_initializations – informações sobre a inicialização de todas as variáveis ​​globais.
- ![Função de sistema](https://www.metatrader5.com/i/help/metaeditor/en/function_system_icon.png)@global_deinitializations – informações sobre a desinicialização de todas as variáveis ​​globais.

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.

## Menu contextual [#](#context)

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

- Abrir – vai para a linha ou função no arquivo do código fonte. A mesma ação pode ser executada com um duplo clique ou Enter.
- Expandir tudo – expande todas as funções minimizadas.
- Recolher tudo – recolhe todas as funções implementadas.
- Funções por linhas – muda para o modo de visualização de resultados de criação de perfil por linhas.
- Funções por chamadas – muda para o modo de visualização de resultados de criação de perfil por chamadas.
- Exportar – exporta os resultados de criação de perfil no formato Open XML (MS Office Excel), HTML (Internet Explorer) ou CSV (arquivo de texto).
- Autodimensionar – ativa/desativa a configuração automática do tamanho do campo. A mesma ação é executada com a tecla "A".
- Grade – ativa/desativa a grade que separa os campos. A mesma ação é executada com a tecla "G".

## In this section

- [Controle inteligente](https://www.metatrader5.com/pt/metaeditor/help/development/intelligent_management)
- [Procurar e Substituir](https://www.metatrader5.com/pt/metaeditor/help/development/source_code_find)
- [Estilizador](https://www.metatrader5.com/pt/metaeditor/help/development/styler)
- [Compilar](https://www.metatrader5.com/pt/metaeditor/help/development/compile)
- [Proteção adicional de programa (MQL5 Protector)](https://www.metatrader5.com/pt/metaeditor/help/development/mql5_cloud_protector)
- [Depurando código](https://www.metatrader5.com/pt/metaeditor/help/development/debug)
- Criação de perfil de código
- [Ajuda do AI Assistant ao escrever código](https://www.metatrader5.com/pt/metaeditor/help/development/ai_assistant)
- [Gerando código de inclusão](https://www.metatrader5.com/pt/metaeditor/help/development/generate_mqh)
- [Trabalhando com DLL C++ (integração com MS Visual Studio)](https://www.metatrader5.com/pt/metaeditor/help/development/c_dll)
- [Trabalho com Python](https://www.metatrader5.com/pt/metaeditor/help/development/python)
- [Suporte a OpenCL](https://www.metatrader5.com/pt/metaeditor/help/development/opencl)

```json
{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ {"@type": "ListItem", "position": 1, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help", "name": "Ajuda para o MetaEditor"}}, {"@type": "ListItem", "position": 2, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help/development", "name": "Desenvolvimento de programas"}}, {"@type": "ListItem", "position": 3, "item": {"@id": "https://www.metatrader5.com/pt/metaeditor/help/development/profiling", "name": "Criação de perfil de código"}} ]}
{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "MetaTrader 5: Criação de perfil de código", "acceptedAnswer": { "@type": "Answer", "text": "A criação de perfil é a coleção das características do programa durante sua execução. Ao..." } }] }
```
