OLP - página 3

 

Sem o segundo parâmetro, é o mesmo.

Arquivos anexados:
test-2.mq5  2 kb
 

Houve alguns erros menores no seu código - corrigi-o e adicionei um resultado de verificação.

O meu resultado em x64:

2010.07.16 20:10:57	Test (GBPUSD,M15)	Класс:   828 результат: 0.9999999999999994
2010.07.16 20:10:56	Test (GBPUSD,M15)	Функция: 735 результат: 0.9999999999999994

A análise do código gerado mostrou que as chamadas de função e de método de classe estavam completamente em linha e eram na realidade iguais uma à outra.

Não houve chamadas de função no laço, e a velocidade ligeiramente inferior da classe deve-se ao endereçamento indirecto a partir deste.


Aqui está o código:

class CLASS
  {
protected:
   double            prev;

public:
          CLASS() { prev=0.0; }
   double ma(double v)
     {
      prev=0.1*v+0.9*prev;
      return(prev);
     }
  };

double FUNC(double v,double prev)
  {
   prev=0.1*v+0.9*prev;
   return(prev);
  }
void OnStart()
  {
   double x;
   int    start;
   CLASS  CL;
//---
   start=GetTickCount();
   x=0;
   for(int i=0;i<100000000;i++)
     {
      x=FUNC(1,x);
     }
   Print("Функция: "+IntegerToString(GetTickCount()-start)," результат: ",x);
//---
   start=GetTickCount();
   x=0;
   for(int i=0;i<100000000;i++)
     {
      x=CL.ma(1);
     }
   Print("Класс: "+IntegerToString(GetTickCount()-start)," результат: ",x);
  }
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 

A diferença entre chamadas de função e métodos de classe só pode ser detectada através de testes especialmente escritos como estes.

Na realidade, a utilização de aulas proporciona uma aceleração ao poupar na passagem de parâmetros frequentemente utilizados.

Документация по MQL5: Основы языка / Типы данных / Структуры и классы
Документация по MQL5: Основы языка / Типы данных / Структуры и классы
  • www.mql5.com
Основы языка / Типы данных / Структуры и классы - Документация по MQL5
 
Renat:

A diferença entre chamadas de função e métodos de classe só pode ser detectada através de testes especialmente escritos como este.

Na realidade, a utilização de classes dá aceleração à custa da economia na transferência de parâmetros frequentemente utilizados.


Concordo, o OOP dificilmente se tornará mais rápido do que a programação processual, a menos que surja apoio de hardware :)

Bem, não o mencione, vou mergulhar no OOP em mql 5, ainda não cheguei lá))

 
mrProF:

Concordo, o OOP dificilmente se tornará mais rápido do que a programação processual, a menos que haja apoio de hardware :)

Bem, não o mencione, mergulharei no OOP em mql 5, nunca cheguei a fazê-lo))

ninguém precisa de todo este OOP, excepto os programadores que querem escrever um OOP artificial))))

Quer dizer, li o artigo na primeira página... Não percebo... Clancy... porquê?

Basta explicar porque... 30 indicadores podem estar ligados ao Expert muito mais depressa... ou o que para)))) eu não entendo, não me zangue.

talvez seja para:




 
maryan.dirtyn:

ninguém precisa de todo este OOP, excepto programadores que queiram escrever um cérebro artificial))))

Li o artigo na primeira página... Não percebo... Clasie... porquê?

Basta explicar porque... 30 indicadores podem estar ligados ao Expert muito mais rapidamente... ou o que para)))) eu não entendo, não fique zangado.

Para programadores que querem escrever um "cérebro" artificial para si próprios e tornar os comerciantes sem cérebro...
 

Se não gosta do OOP, não o utilize

Todas as funcionalidades básicas do MT5 são implementadas classicamente como funções

E comprar doces por peso ou num saco é uma questão de gosto

Gosto de doces no frigorífico, nas prateleiras e embrulhados em embalagens multicoloridas

 
maryan.dirtyn:

ninguém precisa de todo este OOP, excepto programadores que queiram escrever um cérebro artificial))))

Li o artigo na primeira página... Não o compreendo... Clasie... Porquê?

Basta explicar porque... 30 indicadores podem estar ligados ao Expert muito mais depressa... ou o que para)))) eu não entendo, não me zangue.

talvez seja para:




OOP é uma coisa boa para grandes programas.
Se houver menos de 50 linhas de código, não precisa de OOP.
Mas quando o código se torna demasiado, torna-se quase impossível compreender o que pertence ao quê - apenas comentários.
A probabilidade de um erro aumenta quando as variáveis não são partilhadas como pretendido; é uma confusão.
No OOP, as variáveis podem ser armazenadas dentro de um contentor (classe) juntamente com métodos (funções).

Não há tarefa que possa ser escrita no OOP e não pode ser escrita sem o OOP.
É uma questão de conveniência))

O OOP não é um método de resolução de problemas, mas uma forma de estruturar o código.

 

mrProF:

Não há tarefa que não possa ser escrita no OOP e não pode ser escrita sem o OOP.

É uma questão de conveniência))

O OOP não é um método de resolução de tarefas, mas uma forma de estruturação de códigos.

E é isso mesmo... :)
 

Eu estava errado - "Não há tarefa que possa ser escrita em OOP e que não possa ser escrita sem OOP".

Foi assim que eu quis dizer))