앗 - 페이지 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 없이 작성할 수 없는 작업은 없습니다."

그게 내가 원했던 방식))