PROFI'den SUPERPROFI'ye kadar tüm sorularınız - 1. - sayfa 34

 
Zaten yeterli.
 

Fonksiyonlarımın hızında bir artış arıyorum, bu yüzden global değişkenlere ve yerel değişkenlere erişim süresinin ne kadar aynı olduğunu merak ettim, bir komut dosyası çizdim:

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

Günlüğümde bu var:

2012.03.23 13:26:49 EURUSD testi,H1: global dizi: 1343 milisaniye.

2012.03.23 13:26:49 EURUSD,H1 testi: yerel dizi: 2703 milisaniye.

Neden böyle bir fark? belki değişkenlere erişim süresini yanlış hesaplıyorum?

 
Ve düşün :)
 

Siparişin neden açılmadığını aptal biri aydınlatabilir mi ???

TEST CİHAZI "DERGİ YAZIYOR TİCARET AKIŞI MEŞGUL" YAZIYOR

ELLERLE AÇILAN SİPARİŞLER

 
IgorM :

Fonksiyonlarımın hızında bir artış arıyorum, bu yüzden global değişkenlere ve yerel değişkenlere erişim süresinin ne kadar aynı olduğunu merak ettim, bir komut dosyası çizdim:

Günlüğümde bu var:

2012.03.23 13:26:49 EURUSD testi,H1: global dizi: 1343 milisaniye.

2012.03.23 13:26:49 EURUSD,H1 testi: yerel dizi: 2703 milisaniye.

Neden böyle bir fark? belki değişkenlere erişim süresini yanlış hesaplıyorum?

 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 : Bir düşünün :)

Evet, zaten yarım saattir oturuyorum, neyi yanlış yaptığımı merak ediyorum, elimle kafamın arkasını ovma alışkanlığım olsaydı, çoktan kel olurdum! ))))))

ama ciddice? senaryo neden bu kadar büyük bir fark gösteriyor? Bir Borland derleyicisi olsaydı, muhtemelen tam tersi olurdu, peki, uzak aramalar var, yine de açıklayabilirsiniz, sonuçta MT4 Java ilkesine göre çalışıyor gibi görünüyor - her şey bir yığın mı?

önemli olmasa da erişim zamanını doğru değerlendirip değerlendirmediğimi öğrenmek önemli, doğruysa todaları kodun global değişkenlerine aktaracağım.

 
VOLDEMAR :

Terminali yeniden başlatmak yardımcı olacaktır. Bu bir kod sorunu değil.

 
IgorM :

Bu şekilde deneyin :)

   Print ( "локальный массив: " , start_global-start_local , " миллисекунд." );
   Print ( "глобальный массив: " , GetTick-start_global, " миллисекунд." );
 
Zhunko :
aaaaaaaaaaaaaaaa! Print() yoluyla çıktının çok zaman alacağından korktum
 
IgorM :
aaaaaaaaaaaaaaaa! Print() yoluyla çıktının çok zaman alacağından korktum

Öyle olabilir:

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