PLO - pagina 3

 

Senza il secondo parametro, è lo stesso.

File:
test-2.mq5  2 kb
 

C'erano alcuni errori minori nel tuo codice - l'ho corretto e ho aggiunto un'uscita di controllo.

Il mio risultato su 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

L'analisi del codice generato ha mostrato che le chiamate ai metodi di funzione e di classe erano completamente in linea e di fatto uguali tra loro.

Non c'erano chiamate di funzione nel ciclo, e la velocità leggermente inferiore della classe è dovuta all'indirizzamento indiretto da questo.


Ecco il codice:

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
 

La differenza tra chiamate di funzioni e metodi di classe può essere colta solo da test scritti appositamente come questi.

In realtà, l'uso delle classi dà un aumento della velocità risparmiando sul passaggio di parametri usati frequentemente.

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

La differenza tra chiamate di funzioni e metodi di classe può essere colta solo da test scritti appositamente come questo.

In realtà l'uso delle classi dà un'accelerazione a scapito dell'economia nel trasferimento di parametri frequentemente utilizzati.


Sono d'accordo, OOP difficilmente diventerà più veloce della programmazione procedurale, a meno che non appaia il supporto hardware :)

Beh, non c'è di che, ho intenzione di tuffarmi in OOP in mql 5, non ho ancora trovato il tempo di farlo))

 
mrProF:

Sono d'accordo, OOP difficilmente diventerà più veloce della programmazione procedurale, a meno che non ci sia un supporto hardware :)

Beh, non c'è di che, mi immergerò nell'OOP in mql 5, non ci ho mai pensato))

nessuno ha bisogno di tutta questa OOP, tranne i programmatori che vogliono scrivere un cervello artificiale))))

Voglio dire, ho letto l'articolo nella prima pagina... non capisco... Clancy... perché?

Basta spiegare perché... 30 indicatori possono essere attaccati a Expert molto più veloce... o cosa per)))) non capisco davvero, non essere arrabbiato.

forse è per:




 
maryan.dirtyn:

nessuno ha bisogno di tutta questa OOP, tranne i programmatori che vogliono scrivere un cervello artificiale)))

Ho letto l'articolo nella prima pagina... non lo capisco... Clasie... perché?

Basta spiegare perché... 30 indicatori possono essere attaccati a Expert molto più veloce... o cosa per)))) non capisco davvero, non essere arrabbiato.

Per i programmatori che vogliono scrivere un "cervello" artificiale per se stessi e rendere i commercianti senza cervello...
 

Se non ti piace l'OOP, non usarlo

Tutte le funzionalità di base di MT5 sono implementate classicamente come funzioni

E comprare caramelle a peso o in un sacchetto è una questione di gusto

Mi piacciono le caramelle in frigo negli scaffali e avvolte in confezioni multicolori

 
maryan.dirtyn:

nessuno ha bisogno di tutta questa OOP, tranne i programmatori che vogliono scrivere un cervello artificiale)))

Ho letto l'articolo nella prima pagina... non capisco... Clasie... perché?

Basta spiegare perché... 30 indicatori possono essere attaccati a Expert molto più veloce... o cosa per)))) non capisco davvero, non essere arrabbiato.

forse è per:




OOP è una buona cosa per i grandi programmi.
Se ci sono meno di 50 linee di codice, non hai bisogno di OOP.
Ma quando il codice diventa troppo, diventa quasi impossibile capire cosa appartiene a cosa - solo i commenti.
La probabilità di un errore aumenta quando le variabili non sono condivise come previsto; è un casino.
In OOP, le variabili possono essere memorizzate in un contenitore (classe) insieme ai metodi (funzioni).

Non c'è compito che possa essere scritto in OOP e che non possa essere scritto senza OOP.
È una questione di convenienza))

OOP non è un metodo per risolvere i problemi, ma un modo per strutturare il codice.

 

mrProF:

Non c'è compito che non possa essere scritto in OOP e che non possa essere scritto senza OOP.

È una questione di convenienza))

OOP non è un metodo per risolvere i compiti, ma un modo di strutturare il codice.

E questo è giusto... :)
 

Mi sbagliavo - "Non c'è nessun compito che possa essere scritto in OOP e che non possa essere scritto senza OOP".

È così che lo intendevo))