Variável Global ou Local, qual é mais rápida?

 

Existe alguma diferença em declarar uma variável Global (no início de um Expert Advisor) ou dentro das próprias funções (Local) em termos de performance (rapidez)?

Ainda com relação a performance, variáveis Static são mais lentas?

Obrigado! 

 
barbisan:

Existe alguma diferença em declarar uma variável Global (no início de um Expert Advisor) ou dentro das próprias funções (Local) em termos de performance (rapidez)?

Ainda com relação a performance, variáveis Static são mais lentas?

Obrigado! 

Olá barbisan,

Posso estar falando uma grande bobagem, mas acredito que não haja diferença em termos de performance. MQL5 (asim como C++) é uma linguagem de alta performance e, não acredito que o tipo da variável (local ou global) possa afetar (pelo menos significativamente) o desempenho de um código.

Mas, caso seja de teu interesse, você mesmo pode fazer testes. Sugiro você replicar a metodologia descrita nesse artigo: https://www.mql5.com/pt/articles/18. Dê uma olhada na função fnCalculateSpeed. Ela basicamente performa um loop com 10 milhões de passagens e conta o tempo necessários para realizar as operações matemáticas simples internas à função. Caso faça o teste, não esqueça de reportar os resultados!

Abraços,
Malacarne 

Como trocar dados: um DLL para o MQL5 em 10 minutos
Como trocar dados: um DLL para o MQL5 em 10 minutos
  • 2013.12.30
  • MetaQuotes
  • www.mql5.com
Agora, não muitos desenvolvedores lembram como escrever um simples DLL e quais são os recursos especiais da diferente ligação do sistema. Usando vários exemplos, vou tentar mostrar todo o processo da criação de um simples DLL em 10 minutos, bem como discutir alguns detalhes técnicos da nossa implementação de ligação. Mostrarei o processo passo-a-passo da criação de DLL no Visual Studio com exemplos de troca de diferentes tipos de variáveis (números, arrys, strings, etc.). Além disso, explicarei como proteger seu terminal do cliente de travamentos nos DLLs personalizados.
 
Malacarne:

Olá barbisan,

Posso estar falando uma grande bobagem, mas acredito que não haja diferença em termos de performance. MQL5 (asim como C++) é uma linguagem de alta performance e, não acredito que o tipo da variável (local ou global) possa afetar (pelo menos significativamente) o desempenho de um código.

Mas, caso seja de teu interesse, você mesmo pode fazer testes. Sugiro você replicar a metodologia descrita nesse artigo: https://www.mql5.com/pt/articles/18. Dê uma olhada na função fnCalculateSpeed. Ela basicamente performa um loop com 10 milhões de passagens e conta o tempo necessários para realizar as operações matemáticas simples internas à função. Caso faça o teste, não esqueça de reportar os resultados!

Abraços,
Malacarne 

Obrigado Malacarne. Vou testar! Abraços, André Barbisan.
Razão: