Algoritmalar, karar yöntemleri, performanslarının karşılaştırılması - sayfa 17

 

Belirli bir görevde: indeks => değer
CHashMap'ten daha hızlı CArrayList

CArrayList , alanın yarısından fazlasını kaplar ve ayrıca yeni öğeler eklendiğinde daha az yeniden oluşturma işlemine sahiptir (CarrayList'in büyüme faktörü 2'dir ve CHashMap'in mevcut uygulamayla büyüme faktörü 1,2'dir).
Ve CArrayList sonucunu okurken daha az hareket.

 
Sergey Dzyublik :

Belirli bir görevde: indeks => değer
CHashMap'ten daha hızlı CArrayList

CArrayList , alanın yarısından fazlasını kaplar ve ayrıca yeni öğeler eklendiğinde daha az yeniden oluşturma işlemine sahiptir (CarrayList'in büyüme faktörü 2'dir ve CHashMap'in mevcut uygulamayla büyüme faktörü 1,2'dir).
Ve CArrayList sonucunu okurken daha az hareket.

Böyle büyülü bir özellik var: Bu arada, CHashMap'te bir nedenden dolayı eksik olan (bu, geliştiricilerin büyük bir hatasıdır). Belirterek, yeniden eşlemeyi atlıyoruz. Bu görevde belirtebilirsiniz, bu yüzden herhangi bir sorun görmüyorum.

 
Sergey Dzyublik :

Belirli bir görevde: indeks => değer
CArrayList, CHashMap'ten daha hızlıdır

CArrayList , alanın yarısından fazlasını kaplar ve ayrıca yeni öğeler eklendiğinde daha az yeniden oluşturma işlemine sahiptir (CarrayList'in büyüme faktörü 2'dir ve CHashMap'in mevcut uygulamayla büyüme faktörü 1,2'dir).
Ve CArrayList sonucunu okurken daha az hareket.

Bu arada, ölçek katsayılarının neden farklı olması da çok garip. CHashMap'i yeniden eşlemek, daha basit olan CArrayList'ten daha zor olacaktır.

 

Daha da özlü bir versiyon:

 //+------------------------------------------------------------------+
//|                                                      Magic 2.mq5 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
int     All_magics[];
int     order_number;
int     Random_orders_of_strategy;
//+------------------------------------------------------------------+
void Trading()
{
 Random_orders_of_strategy = MathRand ();
 //----------------------------------------
 //Имитируем открытие неопределенного количества ордеров стратегии.
 //----------------------------------------
 for ( int a1 =   0 ; a1 < Random_orders_of_strategy; a1++)
   {
     int this_magic = MathRand ();
     //----------------------------
    order_number++;
     //---------------------------------
     //Меняем размрер массива на каждой итерации.
    //---------------------------------
     ArrayResize (All_magics,order_number);
    All_magics[order_number - 1 ] = this_magic;
     //---------------------------------
   }
 //----------------------------------------
}
//+------------------------------------------------------------------+
int Get_magic( int deal_number)
{
 return (All_magics[deal_number - 1 ]);
}
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   Trading();
   //--------------------------
   ulong t1 = GetMicrosecondCount ();
   Get_magic( 1000 );
   ulong t2 = GetMicrosecondCount ();
   //--------------------------
   Print ( "Время исполнения функции Get_magic() при количестве ордеров " ,Random_orders_of_strategy, " равно " ,t2 - t1);
   //--------------------------
   Print ( "Random_orders_of_strategy  " ,Random_orders_of_strategy);
   Print ( "magic 1:  " ,Get_magic( 1 ), "  magic 2: " ,Get_magic( 2 ), "  magic 3: " ,Get_magic( 3 ));
   
  }
//+------------------------------------------------------------------+
 
Реter Konow :

Daha da özlü bir versiyon:


şimdi kullanalım

şablon < typename T>

 
Alexandr Andreev :

şimdi kullanalım

şablon < typename T>

Ne için?
 
Реter Konow :

Daha da özlü bir versiyon:

Adam uğraşmaya devam ediyor...

 
Реter Konow :

Daha da özlü bir versiyon:

Saçma sapan yazmışsın. Esasen bir diziye dizinine göre erişmenin bir çeşidi. Gerçekte, anlaşma sayıları rastgeledir ve gerçek bir sorunu çözmeniz gerektiğinde tüm örneğiniz çökecektir.

 
Реter Konow :
Ne için?

iyi, olduğu gibi, bir diziyi yeniden yazmak, yeni bir satır eklemek gibi işlevler var ... Standart sürümde, olduğu gibi evrensel değiller ve bu nedenle sürekli olarak yeniden yazılmaları gerekiyor

Küçük işlevlerimizin bir şablonunu alıyoruz - belirli bir ortak

 
Yury Kulikov :

Adam dalga geçmeye devam ediyor...

Belirli bir sorunun ideal çözümü neden alay konusu olarak algılanıyor? Cidden, anlamıyorum...