Algorithmen, Lösungsmethoden, Vergleich ihrer Leistung - Seite 17

 

In der konkreten Aufgabe: index => value
SchnellerCArrayList alsCHashMap

CArrayList benötigt mehr als doppelt so viel Platz und muss beim Hinzufügen neuer Elemente weniger umgeordnet werden(CArrayList hat einen Wachstumsfaktor von 2, währendCHashMap in der derzeitigen Implementierung etwa 1,2 beträgt).
Und es gibt weniger Aufwand beim Lesen der Ergebnisse vonCArrayList.

 
Sergey Dzyublik:

In dieser speziellen Aufgabe: Index => Wert
CArrayList ist schneller alsCHashMap

CArrayList braucht mehr als doppelt so viel Platz und muss auch weniger neu aufgebaut werden, wenn neue Elemente hinzugefügt werden(CArrayList hat den Wachstumsfaktor 2, währendCHashMap in der aktuellen Implementierung etwa 1,2 beträgt).
Und es gibt weniger Aufwand beim Lesen der Ergebnisse vonCArrayList.

Es gibt eine magische Eigenschaft: Kapazität, die übrigens aus irgendeinem Grund in CHashMap fehlt (was ein grobes Versäumnis der Entwickler ist). Durch diese Angabe umgehen wir die erneute Partitionierung. Sie können es in dieser Aufgabe angeben, also sehe ich kein Problem.

 
Sergey Dzyublik:

In der konkreten Aufgabe: index => value
SchnellerCArrayList alsCHashMap

CArrayList benötigt mehr als doppelt so viel Platz und muss beim Hinzufügen neuer Elemente weniger umgeordnet werden(CArrayList hat einen Wachstumsfaktor von 2, währendCHashMap in der derzeitigen Implementierung etwa 1,2 beträgt).
Und es gibt weniger Aufwand beim Lesen der Ergebnisse vonCArrayList.

Warum die Skalenkoeffizienten unterschiedlich sind, ist ebenfalls sehr merkwürdig. Es wird schwieriger sein, CHashMap neu zu ordnen als die einfachere CArrayList.

 

Eine noch komprimiertere Version:

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

Eine noch komprimiertere Version:


Verwenden wir nun

template<typename T>

 
Alexandr Andreev:

Verwenden wir nun

template<typename T>

Und warum?
 
Реter Konow:

Eine noch komprimiertere Version:

Der Mann spottet weiter...

 
Реter Konow:

Eine noch komprimiertere Version:

Sie haben einen ziemlichen Blödsinn geschrieben. Im Wesentlichen eine Variante des Zugriffs auf ein Array über seinen Index. In Wirklichkeit sind die Transaktionsnummern zufällig, und Ihr ganzes Beispiel wird zusammenbrechen, wenn Sie ein echtes Problem lösen müssen.

 
Реter Konow:
Und wozu?

Nun, es gibt Funktionen wie das Umschreiben eines Arrays, das Hinzufügen einer neuen Zeile... In der Standardversion sind sie nicht allgemeingültig, so dass man sie immer wieder neu schreiben muss.

Sie erhalten also eine Vorlage für Ihre eigenen kleinen Funktionen - eine Art gemeinsame

 
Yury Kulikov:

Der Mann spottet weiter...

Warum wird eine perfekte Lösung für ein bestimmtes Problem als Mobbing empfunden? Im Ernst, ich verstehe das nicht...
Grund der Beschwerde: