Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 34

 
Ya es suficiente.
 

Estoy buscando para acelerar mis funciones, así que me pregunté cuánto tiempo se tarda en acceder a las variables globales y las variables locales es el mismo, así que hice 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);
}

mi registro es así:

2012.03.23 13:26:49 test EURUSD,H1: matriz global: 1343 milisegundos.

2012.03.23 13:26:49 test EURUSD,H1: matriz local: 2703 milisegundos.

¿Por qué hay tanta diferencia? ¿Quizás estoy juzgando mal el tiempo de acceso a la variable?

 
Y pensar :)
 

¿Alguien puede iluminar a un tonto por qué una orden no se abre?

EL PROBADOR DICE "EL REGISTRO DICE QUE EL FLUJO COMERCIAL ESTÁ OCUPADO" ?

ÓRDENES ABIERTAS A MANO.

 
IgorM:

Estoy buscando para acelerar mis funciones, así que me pregunté cuánto tiempo se tarda en acceder a las variables globales y las variables locales es el mismo, así que hice un script:

mi registro es así:

2012.03.23 13:26:49 test EURUSD,H1: matriz global: 1343 milisegundos.

2012.03.23 13:26:49 test EURUSD,H1: matriz local: 2703 milisegundos.

¿Por qué hay tanta diferencia? ¿Quizá he calculado mal el tiempo de acceso a las 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: Y pensar :)

Sí, llevo media hora aquí sentado intentando averiguar qué estoy haciendo mal, si tuviera la costumbre de frotarme la nuca con la mano, ¡ya tendría la cabeza calva! )))))

Pero en serio, ¿por qué el script muestra una diferencia tan grande? Si tuviera un compilador Borland, probablemente sería lo contrario, las llamadas lejanas pueden ser explicadas, pero MT4 funciona como el principio de Java - todo en una pila?

Aunque no es importante, lo principal es saber si estimo bien el tiempo de acceso, y si es correcto, entonces moveré la mitad del código a variables globales

 
VOLDEMAR:

Reiniciar el terminal debería ayudar. Esto no es un problema de código.

 
IgorM:

Pruébalo así :)

   Print("локальный массив: " , start_global-start_local , " миллисекунд.");
   Print("глобальный массив: ", GetTick-start_global, " миллисекунд.");
 
Zhunko:
aaaaaaaaahhhh, ¡mierda! Me temía que tardaría mucho en salir a través de Print()
 
IgorM:
aaaaaaaaaahhhh, ¡mierda! Me temía que tardaría mucho en salir a través de Print()

Puedes hacerlo así:

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);
}