Algorithmes, méthodes de résolution, comparaison de leurs performances - page 17

 

Dans la tâche spécifique : index => valeur
CArrayList plus rapide queCHashMap

CArrayList prend plus de deux fois moins d'espace, et il y a moins de réarrangements lors de l'ajout de nouveaux éléments(CArrayList a un facteur de croissance de 2, alors queCHashMap dans l'implémentation actuelle est d'environ 1,2).
Et il y a moins de problèmes lors de la lecture du résultat deCArrayList.

 
Sergey Dzyublik:

Dans cette tâche particulière : index => valeur
CArrayList est plus rapide queCHashMap

CArrayList prend plus de deux fois moins d'espace, et il y a moins de reconstructions lors de l'ajout de nouveaux éléments(CArrayList a un facteur de croissance de 2, alors queCHashMap dans l'implémentation actuelle est d'environ 1,2).
Et il y a moins de problèmes lors de la lecture du résultat deCArrayList.

Il existe une propriété magique : la capacité, qui est d'ailleurs absente de CHashMap pour une raison quelconque (ce qui est un oubli flagrant des développeurs). En le spécifiant, nous contournons le re-partitionnement. Vous pouvez le spécifier dans cette tâche, donc je ne vois pas de problème.

 
Sergey Dzyublik:

Dans la tâche spécifique : index => valeur
CArrayList plus rapide queCHashMap

CArrayList prend plus de deux fois moins d'espace, et il y a moins de réarrangements lors de l'ajout de nouveaux éléments(CArrayList a un facteur de croissance de 2, alors queCHashMap dans l'implémentation actuelle est d'environ 1,2).
Et il y a moins d'agitation lors de la lecture du résultat deCArrayList.

La raison pour laquelle les coefficients d'échelle sont différents chez eux est également très étrange. Il sera plus difficile de réorganiser CHashMap que CArrayList, plus simple.

 

Une version encore plus condensée :

//+------------------------------------------------------------------+
//|                                                      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:

Une version encore plus condensée :


Utilisons maintenant

template<typename T>

 
Alexandr Andreev:

Utilisons maintenant

template<typename T>

Pourquoi ?
 
Реter Konow:

Une version encore plus condensée :

L'homme continue de se moquer...

 
Реter Konow:

Une version encore plus condensée :

Vous avez écrit des conneries. Essentiellement une variante de l'accès à un tableau par son index. En réalité, les nombres de transactions sont aléatoires, et tout votre exemple s'effondrera lorsque vous devrez résoudre un problème réel.

 
Реter Konow:
Pour quoi faire ?

Eh bien, il y a des fonctions telles que réécrire un tableau, ajouter une nouvelle ligne... Dans la version standard, ils ne sont pas universels, et vous devez donc les réécrire en permanence.

Donc, vous obtenez un modèle de vos propres petites fonctions - une sorte de common

 
Yury Kulikov:

L'homme continue de se moquer...

Pourquoi une solution parfaite à un problème particulier est-elle perçue comme de l'intimidation ? Sérieusement, je ne comprends pas...