Algoritmos, métodos de solución, comparación de su rendimiento - página 17

 

En la tarea específica: índice => valor
CArrayList más rápido queCHashMap

CArrayList ocupa más del doble de espacio, también tiene menos reordenamientos cuando se añaden nuevos elementos(CArrayList tiene un factor de crecimiento 2, mientras queCHashMap en la implementación actual es de aproximadamente 1,2).
Y hay menos problemas al leer el resultado deCArrayList.

 
Sergey Dzyublik:

En esta tarea concreta: índice => valor
CArrayList es más rápido queCHashMap

CArrayList ocupa más del doble de espacio, también tiene menos reconstrucciones cuando se añaden nuevos elementos(CArrayList tiene un factor de crecimiento 2, mientras queCHashMap en la implementación actual es de aproximadamente 1,2).
Y hay menos problemas al leer el resultado deCArrayList.

Hay una propiedad mágica: Capacidad, que por cierto está ausente en CHashMap por alguna razón (lo cual es un grave descuido de los desarrolladores). Al especificarlo, evitamos la re-partición. Puedes especificarlo en esta tarea, así que no veo ningún problema.

 
Sergey Dzyublik:

En la tarea específica: índice => valor
CArrayList más rápido queCHashMap

CArrayList ocupa más del doble de espacio, también tiene menos reordenamientos cuando se añaden nuevos elementos(CArrayList tiene un factor de crecimiento 2, mientras queCHashMap en la implementación actual es de aproximadamente 1,2).
Y hay menos problemas al leer el resultado deCArrayList.

También es muy extraño que los coeficientes de escala sean diferentes. Será más difícil reordenar CHashMap que un CArrayList más sencillo.

 

Una versión aún más resumida:

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

Una versión aún más condensada:


Ahora vamos a utilizar

template<typename T>

 
Alexandr Andreev:

Ahora vamos a utilizar

template<typename T>

¿Por qué?
 
Реter Konow:

Una versión aún más condensada:

El hombre sigue burlándose...

 
Реter Konow:

Una versión aún más resumida:

Has escrito una mierda. Esencialmente es una variante del acceso a un array por su índice. En realidad, los números de las transacciones son aleatorios, y todo tu ejemplo se derrumbará cuando tengas que resolver un problema real.

 
Реter Konow:
¿Para qué?

Bueno, hay funciones como reescribir un array, añadir una nueva línea... En la versión estándar no son universales, por lo que hay que reescribirlas todo el tiempo.

Así que se obtiene una plantilla de sus propias funciones pequeñas - una especie de

 
Yury Kulikov:

El hombre sigue burlándose...

¿Por qué se percibe como acoso una solución perfecta a un problema concreto? En serio, no entiendo...