OOP - sayfa 3

 

İkinci parametre olmadan - aynı.

Dosyalar:
test-2.mq5  2 kb
 

Kodunuzda küçük hatalar vardı - düzelttim ve sonuçların test çıktısını ekledim.

x64'teki sonucum:

 2010.07.16 20:10:57	Test (GBPUSD,M15)	Класс:   828 результат: 0.9999999999999994
2010.07.16 20:10:56	Test (GBPUSD,M15)	Функция: 735 результат: 0.9999999999999994

Oluşturulan kodun analizi, işlev ve sınıf yöntemi çağrılarının tamamen satır içi olduğunu ve aslında birbirine eşit olduğunu gösterdi.

Döngüde işlev çağrısı yoktu ve bundan dolaylı adresleme nedeniyle sınıfın hızı biraz daha düşüktü.


İşte kod:

 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
 

İşlev çağrıları ile sınıf yöntemleri arasındaki fark ancak bu tür özel olarak yazılmış testlerde yakalanabilir.

Gerçekte, sınıfların kullanımı, sık kullanılan parametreleri geçmekten tasarruf ederek hız kazandırır.

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

İşlev çağrıları ile sınıf yöntemleri arasındaki fark ancak bu tür özel olarak yazılmış testlerde yakalanabilir.

Gerçekte, sınıfların kullanımı, sık kullanılan parametreleri geçmekten tasarruf ederek hız kazandırır.


Kabul ediyorum, yalnızca donanım desteği görünüyorsa, OOP'nin prosedürel programlamadan daha hızlı olması pek olası değildir :)

Pekala, beni hızlı hatırlama, gidip mql 5'te OOP'ye dalacağım, ellerim henüz ulaşmadı))

 
mrProF :

Kabul ediyorum, yalnızca donanım desteği görünüyorsa, OOP'nin prosedürel programlamadan daha hızlı olması pek olası değildir :)

Pekala, beni hızlı hatırlama, gidip mql 5'te OOP'ye dalacağım, ellerim henüz ulaşmadı))

yapay bir beyin yazmak isteyen programcılar dışında hiç kimse tüm bu OOP'ye ihtiyaç duymaz)))

İlk sayfadaki yazıyı okudum .. Hiç bir şey anlamadım .. klas .. neden?

sadece parmaklarınızla açıklayın .. neden? .. bir uzmana çok daha hızlı 30 gösterge eklemek mümkün olacak mı? .. veya ne için)))) Gerçekten anlamıyorum, kızmayın.

belki buna ihtiyacın vardır:




 
maryan.dirtyn :

yapay bir beyin yazmak isteyen programcılar dışında hiç kimse tüm bu OOP'ye ihtiyaç duymaz)))

İlk sayfadaki yazıyı okudum .. Hiç bir şey anlamadım .. klas .. neden?

sadece parmaklarınızla açıklayın .. neden? .. uzmana çok daha hızlı 30 gösterge eklemek mümkün olacak mı? .. veya ne için)))) Gerçekten anlamıyorum, kızmayın.

Kendilerine yapay bir "beyin" yazmak ve tüccarların beyinlerini çıkarmak isteyen programcılar için...
 

OOP'yi sevmiyorum - kullanmayın

MT5'in tüm ana işlevleri, klasik olarak işlevler biçiminde uygulanır.

Ve tatlıları ağırlıkça veya paket halinde satın almak herkes için bir zevk meselesidir.

Şekerlerin buzdolabındaki raflara yığılıp rengarenk ambalajlara sarılmasına bayılıyorum.

 
maryan.dirtyn :

yapay bir beyin yazmak isteyen programcılar dışında hiç kimse tüm bu OOP'ye ihtiyaç duymaz)))

İlk sayfadaki yazıyı okudum .. Hiç bir şey anlamadım .. klas .. neden?

sadece parmaklarınızla açıklayın .. neden? .. bir uzmana çok daha hızlı 30 gösterge eklemek mümkün olacak mı? .. veya ne için)))) Gerçekten anlamıyorum, kızmayın.

belki buna ihtiyacın vardır:




OOP büyük programlar için iyidir.
Kod 50 satırdan azsa, OOP'ye gerek yoktur.
Ancak çok fazla kod olduğunda, sadece yorumlardan neyin neyle ilgili olduğunu anlamak neredeyse imkansızdır.
Değişkenlerin, korkunun, karışıklığın plansız paylaşımı ile hata olasılığı artar.
OOP'de, değişkenlerin yöntemlerle (fonksiyonlar) birlikte kap (sınıf) içinde saklandığından emin olabilirsiniz.

OOP ile yazılabilen ve OOP olmadan yazılamayan böyle bir görev yoktur.
Kolaylıkla ilgili.)

OOP, sorunları çözmek için bir yöntem değil, kodu yapılandırmanın bir yoludur.

 

mrProF :

OOP ile yazılamayan ve OOP olmadan yazılamayan görev yoktur.

Kolaylıkla ilgilidir.)

OOP, problem çözme yöntemi değil, kodu yapılandırmanın bir yoludur.

Ve doğru... :)
 

Bir hata yaptım - "OOP ile yazılabilecek ve OOP olmadan yazılamayacak böyle bir görev yok."

bende öyle istedim))