PLO - Seite 3

 

Ohne den zweiten Parameter ist es dasselbe.

Dateien:
test-2.mq5  2 kb
 

Es gab einige kleinere Fehler in Ihrem Code - ich habe ihn korrigiert und eine Prüfausgabe hinzugefügt.

Mein Ergebnis auf 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

Die Analyse des generierten Codes zeigte, dass Funktions- und Klassenmethodenaufrufe vollständig inline und eigentlich gleichwertig waren.

In der Schleife gab es keine Funktionsaufrufe, und die etwas geringere Geschwindigkeit der Klasse ist auf die indirekte Adressierung zurückzuführen.


Hier ist der Code:

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
 

Der Unterschied zwischen Funktionsaufrufen und Klassenmethoden kann nur durch speziell geschriebene Tests wie diesen herausgefunden werden.

In Wirklichkeit führt die Verwendung von Klassen zu einer Beschleunigung, da die Übergabe häufig verwendeter Parameter eingespart wird.

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

Der Unterschied zwischen Funktionsaufrufen und Klassenmethoden kann nur durch speziell geschriebene Tests wie diesen herausgefunden werden.

In Wirklichkeit führt die Verwendung von Klassen zu einer Beschleunigung auf Kosten der Wirtschaftlichkeit bei der Übertragung häufig verwendeter Parameter.


Ich stimme zu, OOP wird kaum schneller werden als prozedurale Programmierung, es sei denn, es gibt Hardware-Unterstützung :)

Nun, erwähnen Sie es nicht, ich werde in mql 5 in OOP eintauchen, ich bin noch nicht dazu gekommen))

 
mrProF:

Ich stimme zu, OOP wird kaum schneller werden als prozedurale Programmierung, es sei denn, es gibt Hardware-Unterstützung :)

Nun, erwähnen Sie es nicht, ich werde in OOP in mql 5 eintauchen, ich bin nie dazu gekommen))

niemand braucht dieses ganze OOP, außer Programmierer, die ein künstliches Gehirn schreiben wollen))))

Ich meine, ich habe den Artikel auf der ersten Seite gelesen... ich verstehe es nicht... Clancy... warum?

Erklären Sie einfach, warum... 30 Indikatoren können an Expert viel schneller angebracht werden... oder was für)))) ich nicht wirklich verstehen, nicht böse sein.

vielleicht ist es für:




 
maryan.dirtyn:

niemand braucht dieses ganze OOP, außer Programmierer, die ein künstliches Gehirn schreiben wollen)))

Ich habe den Artikel auf der ersten Seite gelesen... Ich verstehe das nicht... Clasie... warum?

Erklären Sie einfach, warum... 30 Indikatoren können an Expert viel schneller angebracht werden... oder was für)))) ich nicht wirklich verstehen, nicht böse sein.

Für Programmierer, die ein künstliches "Gehirn" für sich selbst schreiben und Händler hirnlos machen wollen...
 

Wenn Sie OOP nicht mögen, sollten Sie es nicht verwenden.

Alle Grundfunktionen von MT5 sind klassisch als Funktionen implementiert

Und der Kauf von Süßigkeiten nach Gewicht oder in einer Tüte ist eine Frage des Geschmacks

Ich mag Süßigkeiten im Kühlschrank in den Regalen und in bunten Verpackungen

 
maryan.dirtyn:

niemand braucht dieses ganze OOP, außer Programmierer, die ein künstliches Gehirn schreiben wollen))))

Ich habe den Artikel auf der ersten Seite gelesen... Ich verstehe das nicht... Clasie... warum?

Erklären Sie einfach, warum... 30 Indikatoren können an Expert viel schneller angebracht werden... oder was für)))) ich nicht wirklich verstehen, nicht böse sein.

vielleicht ist es für:




OOP ist eine gute Sache für große Programme.
Wenn Sie weniger als 50 Zeilen Code haben, brauchen Sie kein OOP.
Aber wenn der Code zu umfangreich wird, ist es fast unmöglich zu verstehen, was wozu gehört - nur noch Kommentare.
Die Wahrscheinlichkeit eines Fehlers steigt, wenn Variablen nicht wie vorgesehen gemeinsam genutzt werden; das ist ein Chaos.
In OOP können Variablen zusammen mit Methoden (Funktionen) in einem Container (Klasse) gespeichert werden.

Es gibt keine Aufgabe, die in OOP geschrieben werden kann und die nicht ohne OOP geschrieben werden kann.
Es ist eine Frage der Bequemlichkeit))

OOP ist keine Methode zur Lösung von Problemen, sondern eine Methode zur Strukturierung von Code.

 

mrProF:

Es gibt keine Aufgabe, die nicht in OOP geschrieben werden kann und die nicht ohne OOP geschrieben werden kann.

Es ist eine Frage der Bequemlichkeit))

OOP ist keine Methode zur Lösung von Aufgaben, sondern eine Art der Codestrukturierung.

Und das ist richtig... :)
 

Ich hatte Unrecht - "Es gibt keine Aufgabe, die in OOP geschrieben werden kann und die nicht ohne OOP geschrieben werden kann".

So habe ich es gemeint))