Alle Fragen von einem PROFI an einen SUPER PROFI - 1. - Seite 35

 
Ich weiß nicht, wie es bei MQL4 ist, aber als ich ein Rennen in C++ durchgeführt habe, ist mir aufgefallen, dass der Code, den Sie zuerst ausführen, langsamer ist als der zweite. Sicherlich dauert es eine Weile, bis der Speicher zugewiesen wird. Normalerweise 5% langsamer.
 
double H_global[1000],L_global[1000];
int start(){
   int i,j,start_local,start_global,GetTick_local,GetTick_global;
   double H_local[1000],L_local[1000];
   start_local=GetTickCount();
   for(j=0;j<10000;j++)
      for(i=0;i<1000;i++){
         H_local[i] = High[i];
         L_local[i] = Low[i];
      }
   GetTick_local = GetTickCount();
//---------------------
   start_global=GetTickCount();
   for(j=0;j<10000;j++)
      for(i=0;i<1000;i++){
         H_global[i] = High[i];
         L_global[i] = Low[i];
      }
   GetTick_global = GetTickCount();
//---------------------   
   Print("локальный массив: " , GetTick_local-start_local , " миллисекунд.");
   Print("глобальный массив: ", GetTick_global-start_global, " миллисекунд.");
return(0);
}

im Protokoll:

2012.03.23 13:40:50 Test EURUSD,H1: Globales Array: 1406 Millisekunden.

2012.03.23 13:40:50 Test EURUSD,H1: Lokales Array: 1344 Millisekunden.

jetzt macht es Sinn: globale Variablen brauchen ein bisschen länger, lokale schneller; obwohl ich dachte, dass es keinen Unterschied macht, sollte ich es in der aufgerufenen Funktion messen, vielleicht gibt es einen anderen Unterschied

 
IgorM:

im Protokoll:

2012.03.23 13:40:50 Test EURUSD,H1: Globales Array: 1406 Millisekunden.

2012.03.23 13:40:50 Test EURUSD,H1: Lokales Array: 1344 Millisekunden.

jetzt macht es Sinn: globale Variablen brauchen ein bisschen länger, lokale schneller; obwohl ich dachte, dass es keinen Unterschied macht, sollte ich es in der aufgerufenen Funktion messen, vielleicht gibt es noch einen anderen Unterschied

Ich vermute, dass die Ergebnisse dieselben bleiben, wenn man sie austauscht.
 
Zhunko: Ich schätze, dass die Ergebnisse gleich bleiben, wenn man sie austauscht.

geändert und start() nach func() kopiert, nachdem die Drucke start func() :

2012, 03.23 14:11:15 Test EURUSD,H1: Lokales Array: 1313 Millisekunden.

2012.03.23 14:11:15 Test EURUSD,H1: Globales Array: 1359 Millisekunden.

2012.03.23 14:11:15 Test EURUSD,H1: Aufruf der Funktion.....

2012.03.23 14:11:18 test EURUSD,H1: ph-action, lokales Array: 1312 Millisekunden.

2012.03.23 14:11:18 test EURUSD,H1: f-action, global array: 1328 milliseconds.




 
IgorM:

geändert und start() nach func() kopiert, nachdem die Drucke start func() :

2012, 03.23 14:11:15 Test EURUSD,H1: Lokales Array: 1313 Millisekunden.

2012.03.23 14:11:15 Test EURUSD,H1: Globales Array: 1359 Millisekunden.

2012.03.23 14:11:15 Test EURUSD,H1: Aufruf der Funktion.....

2012.03.23 14:11:18 test EURUSD,H1: ph-action, lokales Array: 1312 Millisekunden.

2012.03.23 14:11:18 Test EURUSD,H1: f-action, globale Anordnung: 1328 Millisekunden.

Global und lokal vertauscht? Im Moment ist es zuerst lokal, dann global. Es sollte andersherum sein.
 
IgorM:

geändert und start() nach func() kopiert, nachdem die Drucke start func() :

2012, 03.23 14:11:15 Test EURUSD,H1: Lokales Array: 1313 Millisekunden.

2012.03.23 14:11:15 Test EURUSD,H1: Globales Array: 1359 Millisekunden.

2012.03.23 14:11:15 Test EURUSD,H1: Aufruf der Funktion.....

2012.03.23 14:11:18 test EURUSD,H1: ph-action, lokales Array: 1312 Millisekunden.

2012.03.23 14:11:18 test EURUSD,H1: f-action, global array: 1328 milliseconds.

Die Adresse der lokalen Variablen wird spekulativ ab dem Funktionsaufruf gezählt, die Adresse der globalen Variablen ab dem Programmaufruf, d.h. um auf die globale Variable zugreifen zu können, muss eine weitere Aktion (Hinzufügen eines Offsets) durchgeführt werden.
 
Zhunko: Haben Sie das globale und das lokale System vertauscht? Jetzt ist die lokale zuerst dran, gefolgt von der globalen. Ich sollte es rückgängig machen lassen.

Ich tat dies, aber die Ergebnisse änderten sich nicht, und ich deklarierte auch ein Array in einer separaten Funktion, rief die Funktion auf und verglich sie mit einem globalen Array-Aufruf

alsu, das ist eine ziemlich logische Annahme, aber meine Experimente haben mich auf eine lustige Idee gebracht: mql4 ist für Lamer, man deklariert es so, wie man will, wie man im Spiel sagt. ))). Vielleicht werde ich ein paar Experimente mit mql5 machen, wenn ich es nicht vergesse, es ist nur eine Diskussion über die Leistung von MT5, vielleicht wird etwas klar werden.

 

Hat zufällig noch niemand FANN auf mql portiert? http://leenissen.dk/fann/wp/download/, oder ähnlichen Code auf mql mit NS.

ZS: Ich kann kein fertiges NS über die Suche und Google finden, ich habe eine .dll mit FANN verbunden, es funktioniert ziemlich gut, aber ich hätte es gerne ohne .dll.

 
IgorM:

Hat zufällig niemand FANN auf mql portiert? http://leenissen.dk/fann/wp/download/, oder ähnlichen Code auf mql mit NS.

ZS: Ich kann kein fertiges NS über die Suche und Google finden, ich habe eine .dll mit FANN verbunden, es funktioniert ziemlich gut, aber ich hätte es gerne ohne .dll.


Es ist besser, das Netzwerk in einer speziellen Software zu trainieren. Es ist viel schneller. Und es ist besser, sie im Code zu verwenden
 
Vinin: Es ist besser, das Netz in einer speziellen Software zu trainieren. Sie ist wesentlich schneller. Und es ist besser, sie im Code zu verwenden
Ich weiß, aber ich brauche es wirklich und ... Ich möchte einen Auto-Optimierer in meinem Expert Advisor machen, ohne .dll :)