Programação OOP vs procedimento - página 24

 
Dmitry Fedoseev:

1. Há um critério. O critério principal é a velocidade de operação.

A visibilidade do código é o critério errado.


Todos mudam urgentemente para asambler..... mas fast.... é verdade que o que é rápido é a organização adequada de todo o projeto ou a velocidade das funções individuais

 
Alexandr Andreev:

Todos se mudam urgentemente para asambler..... mas fast.... a verdade é rápida é a velocidade de todo o projeto ou a velocidade das funções individuais

Assembler + DLL
 
Alexandr Andreev:

Todos se mudam urgentemente para asambler..... mas fast.... o que é realmente rápido é a organização adequada de todo o projeto ou a velocidade das funções individuais


Não, continue codificando através do ***.

 
George Merts:

Bem, eu discordo.

A clareza do código é uma coisa muito importante, porque código claro é muito mais fácil de manter e modificar.

Isso mesmo - eu escrevi uma função nua, e então realmente a "ofusquei", tornando-a invisível e incompreensível. Esta foi uma decisão forçada. Neste caso, foi mais importante para mim tornar a classe inteira transparente. Eu sacrifiquei a clareza de uma função bastante trivial. É claro que eu poderia ter colocado o corpo desta função no arquivo .mq5, mas acredito que as interfaces não devem ser divididas em dois arquivos e devem ser completamente descritas no arquivo de cabeçalho .mqh.

Velocidade também é algo a se ter em mente, mas não acho que devemos nos esforçar por "velocidade a qualquer custo". Tem que haver uma suficiência razoável.


Provavelmente o mesmo ponto 3 para você também

 

Estou programando há muito tempo. Desde o lançamento do MT3.

Desde então, sinto-me mais confortável escrevendo em estilo processual no mql4. Eu não tenho EAs em 1001 linhas. Além disso, eu tenho apenas algumas funções armazenadas em bibliotecas.

E na MQL5 eu utilizo a biblioteca padrão. É uma coisa conveniente.

Mas a otimização do desempenho deve ser feita para evitar chamar mais e mais funções pesadas. Recentemente, tenho modificado uma EA de Mql4 para MQL5. Usei a biblioteca aqui apresentada. Demorei meio dia para descobrir todas as funções e funcionou, mas a otimização foi muito lenta. Eu tenho indicador de corte para 2 barras e tudo começou a voar.

A conclusão é simples. Todos podem escrever em qualquer estilo. MQL não é realmente uma linguagem que requer otimização de código para ganhar um par de milissegundos através da programação de procedimentos. As tarefas lógicas são mais importantes. A forma como são implementadas praticamente não tem efeito sobre a velocidade.

 
Dmitiry Ananiev:

...

A conclusão é simples. Todos podem escrever em qualquer estilo. MQL não é realmente uma linguagem, que requer otimização de código, de modo que pode ganhar alguns milissegundos usando programação procedural. As tarefas lógicas são mais importantes. A forma como são implementadas praticamente não tem efeito sobre a velocidade.


Tão discretamente desiludido que é a programação de procedimentos que proporciona alto desempenho. Há três dias venho lhes mostrando um problema que só pode ser resolvido pelo OOP sem freios desnecessários.

O OOP nos permite selecionar conjuntos de variáveis do restante do código, o que nos permite evitar passar parâmetros para métodos ao realizar cálculos dentro de uma classe, e este é um fator significativo para a velocidade. Mesmo se você o fizer em estilo processual, terá que criar um grande número de variáveis globais e, como resultado, a legibilidade do código é impossivelmente baixa.

 
Dmitry Fedoseev:

Foi tão gentilmente decepcionado que é a programação de procedimentos que proporciona alto desempenho. Há três dias eu venho mostrando aqui um problema que só pode ser resolvido pelo OOP sem freios desnecessários.

O OOP nos permite selecionar conjuntos de variáveis do restante do código, o que nos permite evitar passar parâmetros para métodos ao realizar cálculos dentro de uma classe, e este é um fator significativo para a velocidade. Mesmo se você fizer isso em um estilo de procedimento, você terá que criar um grande número de variáveis globais, e como resultado, a legibilidade do código é impossivelmente baixa.

O ganho de estilo de procedimento é insignificante, porque o código é iniciado com cada tick em Expert Advisors. E pode haver centenas ou mesmo dezenas de milissegundos entre carrapatos. Eu nunca me preocupei com indicadores. Eu não encontrei nenhum lucro real de indicadores.
Entretanto, é provavelmente mais conveniente usar o OOP para grandes projetos. Eu mesmo prefiro usar estruturas, se eu tiver que salvar alguma coisa.
O acesso aos dados é então mais claramente organizado e o menu pull-down é muito conveniente de usar. Se você substitui estruturas por arrays, muitas vezes surge confusão e o número de arrays cresce.

No post anterior eu estava colocando a ênfase exatamente em chamar funções pesadas. Por exemplo, algum tipo de loop loop que não precisa ser chamado em cada carrapato. E você também não precisa fazer isso em cada novo bar.
É aí que o ganho real de desempenho pode ser aumentado.

 

Sim. É um debate engraçado: Escavadeira versus pá.

Se você quiser plantar uma árvore, uma pá é melhor. Mas se você quiser cavar um buraco, a retroescavadeira provavelmente é melhor.

 
Nikolai Semko:

Sim. É um debate engraçado: Escavadeira versus pá.

Se você quiser plantar uma árvore, uma pá é melhor. Mas se você quiser cavar um buraco, a retroescavadeira provavelmente é melhor.

Aqueles que só dominaram a pá também usarão a pá.
 
Nikolai Semko:

Sim. É um debate engraçado: Escavadeira versus pá.

Se você quiser plantar uma árvore, uma pá é melhor. Mas se você quiser cavar um buraco, a retroescavadeira provavelmente é melhor.

Não está claro porque tantos jardineiros locais se tornaram escavadores convencidos e fazem uma trincheira para uma árvore)).
Razão: