ООП - страница 3

 

Без второго параметра - одинаково.

 

Файлы:
test-2.mq5  2 kb
 

В Вашем коде были мелкие  ошибки - я его поправил и добавил проверочный вывод результатов.

Мой результат на 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

Анализ сгенерированного кода показал, что вызовы функции и метода класса полностью заинлайнились и фактически были равны друг другу.

В цикле никаких вызовов функций не было, а чуть меньшая скорость у класса получилась из-за косвенной адресации от this.


Вот код:

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
 

Разницу между вызовами функций и методами классов можно уловить только вот на таких специально написанных тестах.

В реальности использование классов дает ускорение за счет экономии на передаче часто используемых параметров.

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

Разницу между вызовами функций и методами классов можно уловить только вот на таких специально написанных тестах.

В реальности использование классов дает ускорение за счет экономии на передаче часто используемых параметров.


Согласен, ООП быстрее процедурного программирования врятли станет, если только аппаратная поддержка появится :)

Ну чтож, не поминайте лихом, пойду окунусь в ООП на mql 5, до него еще не доходили руки))

 
mrProF:

Согласен, ООП быстрее процедурного программирования врятли станет, если только аппаратная поддержка появится :)

Ну чтож, не поминайте лихом, пойду окунусь в ООП на mql 5, до него еще не доходили руки))

весь етот ООП никому не нужен, кроме программеров, которие хотят написать искуственний мозГ )))

читал статью приведенную на первой странице.. не понял ровним счетом ничего.. класи.. зачем?

просто на пальцах обьясните.. зачем?.. можно будет 30 индикаторов намного бистрей цеплять к експерту?.. или для чего)))) реально не понимаю, не серчайте. 

 

а может ето нужно для: 




 
maryan.dirtyn:

весь етот ООП никому не нужен, кроме программеров, которие хотят написать искуственний мозГ )))

читал статью приведенную на первой странице.. не понял ровним счетом ничего.. класи.. зачем?

просто на пальцах обьясните.. зачем?.. можно будет 30 индикаторов намного бистрей цеплять к експерту?.. или для чего)))) реально не понимаю, не серчайте. 

Для программеров, которие хотят написать искуственний "мозГ" для себя, и вынести мозг трейдерам...
 

Не нравится ООП - не используй его

Вся основная функциональность МТ5 реализована классически в виде функций

А покупать конфеты на вес или в упаковке - это дело вкуса каждого

Я люблю, когда конфеты разложены по полочкам в холодильнике и обернуты в разноцветную упаковку  

 
maryan.dirtyn:

весь етот ООП никому не нужен, кроме программеров, которие хотят написать искуственний мозГ )))

читал статью приведенную на первой странице.. не понял ровним счетом ничего.. класи.. зачем?

просто на пальцах обьясните.. зачем?.. можно будет 30 индикаторов намного бистрей цеплять к експерту?.. или для чего)))) реально не понимаю, не серчайте. 

 

а может ето нужно для: 




ООП хорошая штука для больших программ.
Если кода меньше 50-ти строк, то надобности в ООП не возникает.
А вот когда кода становится очень много, понять что к чему относится почти невозможно, только по комментариям.
Возрастает вероятность ошибки при не запланированном совместном использовании переменных, ужас, каша.
В ООП можно сделать что-бы переменные хранились внутри контейнера(класса) вместе с методами (функциями).

Нет такой задачи которую можно написать на ООП и которую нельзя написать без ООП.
Дело в удобстве))

ООП это не метод решения задач, а способ структуризации кода.

 

mrProF:

Нет такой задачи которую нельзя написать на ООП и которую нельзя написать без ООП.

Дело в удобстве))

ООП это не метод решения задач, а способ структуризации кода.

И это правильно... :)
 

Ошибся я-"Нет такой задачи которую можно написать на ООП и которую нельзя написать без ООП."

Вот как хотел))

Причина обращения: