Toute question d'un PROFI à un SUPER PROFI - 1. - page 34

 
C'est déjà assez.
 

Je cherche à accélérer mes fonctions, donc je me suis demandé combien de temps il faut pour accéder aux variables globales et aux variables locales est le même, donc j'ai fait un script :

double H_global[1000],L_global[1000];
int start(){
   int i,j,start_local,start_global,GetTick;
   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];
      }
//---------------------
   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 = GetTickCount();
//---------------------   
   Print("локальный массив: " , GetTick-start_local , " миллисекунд.");
   Print("глобальный массив: ", GetTick-start_global, " миллисекунд.");
return(0);
}

mon journal est comme ça :

2012.03.23 13:26:49 test EURUSD,H1 : tableau global : 1343 millisecondes.

2012.03.23 13:26:49 test EURUSD,H1 : tableau local : 2703 millisecondes.

pourquoi y a-t-il une telle différence ? peut-être que je me trompe sur le temps d'accès de la variable ?

 
Et pour réfléchir :)
 

Quelqu'un peut-il m'expliquer pourquoi un ordre ne s'ouvre pas ?

LE TESTEUR DIT "LE JOURNAL INDIQUE QUE LE FLUX COMMERCIAL EST OCCUPÉ" ?

LES COMMANDES OUVERTES À LA MAIN.

 
IgorM:

Je cherche à accélérer mes fonctions, donc je me suis demandé combien de temps il faut pour accéder aux variables globales et aux variables locales est le même, donc j'ai fait un script :

mon journal est comme ça :

2012.03.23 13:26:49 test EURUSD,H1 : tableau global : 1343 millisecondes.

2012.03.23 13:26:49 test EURUSD,H1 : tableau local : 2703 millisecondes.

pourquoi y a-t-il une telle différence ? peut-être ai-je mal estimé le temps d'accès aux variables ?

double H_global[1000],L_global[1000];
int start(){
   int i,j,start_local,start_global,GetTick;
   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 = GetTickCount();
   Print("локальный массив: " , GetTick-start_local , " миллисекунд.");
//---------------------
   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 = GetTickCount();   
   Print("глобальный массив: ", GetTick-start_global, " миллисекунд.");
return(0);
}
 
TheXpert: Et de penser :)

Ouais, ça fait une demi-heure que je suis assis là à essayer de comprendre ce que je fais de travers, si j'avais l'habitude de me frotter l'arrière de la tête avec ma main, je serais déjà chauve ! )))))

Mais sérieusement, pourquoi le script montre-t-il une telle différence ? Si j'avais un compilateur Borland, ce serait probablement le contraire, les appels lointains peuvent être expliqués, mais MT4 fonctionne comme le principe de Java - tout en une seule pile ?

Bien que ce ne soit pas important, la chose principale est de savoir si j'estime correctement le temps d'accès, et si c'est correct, alors je déplacerai la moitié du code vers les variables globales.

 
VOLDEMAR:

Le redémarrage du terminal devrait aider. Ce n'est pas un problème de code.

 
IgorM:

Essayez comme ceci :)

   Print("локальный массив: " , start_global-start_local , " миллисекунд.");
   Print("глобальный массив: ", GetTick-start_global, " миллисекунд.");
 
Zhunko:
aaaaaaaaaaaaaaahhhh, merde ! j'avais peur que ça prenne beaucoup de temps pour sortir via Print()
 
IgorM:
aaaaaaaaaaahhhh, merde ! j'avais peur que ça prenne beaucoup de temps pour sortir via Print()

Vous pouvez le faire de cette façon :

double H_global[1000],L_global[1000];
int start(){
   int i,j,start_local,start_global
,GetTickG,GetTickL;

;
   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];
      }
   GetTickL = 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];
      }
   GetTickG = GetTickCount();   
   Print("локальный массив: " , GetTickL-start_local , " миллисекунд.");
   Print("глобальный массив: ", GetTickG-start_global, " миллисекунд.");
return(0);
}