PROFI에서 SUPERPROFI에 대한 모든 질문 - 1. - 페이지 34

 
이미 충분합니다.
 

내 함수의 속도 증가를 찾고 있으므로 전역 변수 와 지역 변수에 액세스하는 시간이 얼마나 동일한지 궁금하여 스크립트를 스케치했습니다.

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

내 로그에 다음이 있습니다.

2012.03.23 13:26:49 테스트 EURUSD,H1: 전역 배열: 1343밀리초.

2012.03.23 13:26:49 테스트 EURUSD,H1: 로컬 배열: 2703밀리초.

왜 그런 차이가 있습니까? 변수에 대한 액세스 시간을 잘못 계산하고 있습니까?

 
그리고 생각해보세요 :)
 

누군가 주문이 열리지 않은 이유를 바보에게 알릴 수 있습니까 ???

테스터는 "저널은 거래 흐름이 바쁘다"고 씁니다.

손으로 열리는 주문

 
IgorM :

내 함수의 속도 증가를 찾고 있으므로 전역 변수와 지역 변수에 액세스하는 시간이 얼마나 동일한지 궁금하여 스크립트를 스케치했습니다.

내 로그에 다음이 있습니다.

2012.03.23 13:26:49 테스트 EURUSD,H1: 전역 배열: 1343밀리초.

2012.03.23 13:26:49 테스트 EURUSD,H1: 로컬 배열: 2703밀리초.

왜 그런 차이가 있습니까? 변수에 대한 액세스 시간을 잘못 계산하고 있습니까?

 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 : 생각해봐 :)

그래, 내가 지금 30분이나 앉아 있는데 내가 뭘 잘못하고 있는 걸까, 뒷머리를 손으로 문지르는 버릇이 있었다면 벌써 대머리가 되었을 텐데! )))))))

하지만 진지하게? 스크립트가 왜 그렇게 큰 차이를 보이는가? Borland 컴파일러가 있었다면 아마도 반대였을 것입니다. 음, 원거리 호출이 있습니다. 여전히 설명할 수 있습니다. 음, 결국 MT4는 Java 원칙에 따라 작동하는 것 같습니다. 모든 것이 힙에 있습니까?

중요하지 않지만 액세스 시간을 올바르게 평가했는지 확인하는 것이 중요합니다 . 맞으면 코드의 전역 변수에 todas를 전송합니다.

 
VOLDEMAR :

터미널을 다시 시작하면 도움이 됩니다. 이것은 코드 문제가 아닙니다.

 
IgorM :

이렇게 해보세요 :)

   Print ( "локальный массив: " , start_global-start_local , " миллисекунд." );
   Print ( "глобальный массив: " , GetTick-start_global, " миллисекунд." );
 
Zhunko :
아아아아아아아아아아! Print() 를 통한 출력이 시간이 많이 걸릴까 봐
 
IgorM :
아아아아아아아아아아! Print()를 통한 출력이 시간이 많이 걸릴까 봐

다음과 같이 될 수 있습니다.

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