PLO - 页 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

对生成的代码的分析表明,函数和类的方法 调用是完全内联的,实际上是相互平等的。

循环中没有函数调用,该类的速度略低是由于间接寻址造成的。


以下是代码。

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:

函数调用和类方法 之间的区别只能通过像这样专门编写的测试来发现。

在现实中,使用类来加速,但却牺牲了传输常用参数的经济性。


我同意,OOP很难变得比程序化编程快,除非出现硬件支持:)

好吧,别提了,我准备在mql 5中潜心研究OOP,我还没来得及研究呢))

 
mrProF:

我同意,OOP很难变得比程序化编程快,除非有硬件支持 :)

好吧,别提了,我将在mql 5中潜心研究OOP,我还没来得及研究呢))

没有人需要所有这些OOP,除了那些想写一个人工大脑的程序员))))。

我的意思是,我已经读了第一页的文章......我不明白......克兰西......为什么?

只要解释一下原因......30个指标可能附在专家身上要快得多......或者什么为)))),我不太明白,不要生气。

也许它是为。




 
maryan.dirtyn:

没有人需要这些OOP,除了那些想写人工大脑的程序员))))

我读了第一页的文章......我不明白,克拉西......为什么?

只要解释一下原因......30个指标可能附在专家身上要快得多......或者什么为)))),我不太明白,不要生气。

对于那些想为自己写一个人工 "大脑 "的程序员来说,使交易员无脑...
 

如果你不喜欢OOP,就不要使用它。

MT5的所有基本功能都是以函数的形式经典实现的

而按重量或按袋购买糖果则是一个品味问题。

我喜欢把糖果放在冰箱的架子上,用五颜六色的包装包裹着。

 
maryan.dirtyn:

没有人需要这些OOP,除了那些想写人工大脑的程序员))))

我读了第一页的文章......我不明白,克拉西......为什么?

只要解释一下原因......30个指标可能附在专家身上要快得多......或者什么为)))),我不太明白,不要生气。

也许它是为。




OOP对于大型程序来说是一件好事。
如果代码少于50行,你就不需要OOP。
但当代码变得太多时,几乎不可能理解什么属于什么--只有注释。
当变量没有按预期共享时,出错的概率就会增加;这是一个混乱。
在OOP中,变量可以和方法(函数)一起存储在一个容器(类)中。

没有什么任务可以用OOP来写,也没有什么任务可以不用OOP来写。
这是一个方便的问题))

OOP不是一种解决问题的方法,而是一种结构代码的方式。

 

mrProF:

没有什么任务是不能用OOP编写的,也没有什么任务是不可以用OOP编写的。

这是一个方便的问题))

OOP不是一种解决任务的方法,而是一种代码结构的方式。

这就对了...:)
 

我错了--"没有什么任务可以用OOP来写,也没有什么任务可以不用OOP来写"。

这就是我的意思))。