MQL4 hakkında sorular - sayfa 12

 
tek soru, будет ли работать заметно быстрее, если обработку массивов вынести в DLL?
Kim bir derleyici kurdu? Hesap Lütfen! gerçekten çok kırılgan değil mi?


dizi erişimi, yerel değişkenlerden on kat daha yavaştır.


Bir dizi öğesine erişim süresi, bir değişkene erişim süresinden HER ZAMAN daha uzun DEĞİLDİR.
Belirli sayılar derleyiciler arasında değişecektir, ancak eğilim devam etmelidir.

Derleyici - Visual Studio 2005. İşlemci - Athlon XP 2500+.
Dizi başlatma ile birlikte yürütme süresi - 1.06-1.07 s.
Dim t1, t2 Çift Olarak
t1 = TarihAndTime.Timer()
Dim x, y, z Çift Olarak
Dim d, k Çift Kişilik
Dim Açık(5001), Çift Olarak Kapat(5001)
d = 5000 için 1 Adım -1
	k = 1 ila 4999 için
		z = Kapat(k) : y = Kapat(k + 1) : x = Kapat(k + 2)
		z = Açık(k) : y = Açık(k + 1) : x = Açık(k + 2)
	Sonraki
Sonraki
t2 = TarihAndTime.Timer()
MsgBox(CStr(t2 - t1) + "saniye")



Aynı döngü, ancak

z = Kapat(1) : y = Kapat(1) : x = Kapat(1)
z = Açık(1) : y = Açık(1) : x = Açık(1)


0.37-0.4 s verir.

Ve sonunda

z = k : y = k : x = k
z = k : y = k : x = k


0,56-0,6 sn.

Buna dayanarak, aşağıdaki sonucu çıkarmak istiyorum:
ana şey bir derleyici değil, bir "dizi / dizi değil" değil, ana şey doğru veri yapılandırması ve doğru kod!
PS Tabii ki, zaman ölçümleri hariç tüm bu tezler, tıpkı bir programcı olarak kişisel, derinden öznel ve mütevazı görüşümdür.

 
teşekkür etmek!

evet sonuçta derleyicide ortaya çıkan kodun optimizasyonu bir güçtür..
Vahşi doğaya girmek istemiyorum ama görünüşe göre görsel stüdyo derleyicisi dizi erişimlerini optimize ediyor.
testin dürüstlüğü için bir değişken girmelisiniz, örneğin S; ve "saf" hız elde etmek için zamana ek olarak tüm x,y,z atamaları arasına S=S+x, S=S+y, S=S+z gibi bir şey ekleyin ve sonunda S çıktısına S ekleyin.

derleyici optimize edici bu aldatmacayı kısmen çözebilse de .. :)
 
testin dürüstlüğü için bir değişken tanıtmanız gerekir


Uzun zamandır bu tür düşünceleri terk ettim. Ve hatta kontroller yaptı. Ve şu sonuca vardık:

Derleyici, belirtilen tüm işlemleri gerçekleştirir ve bunları gerçekleştirmeme hakkı yoktur , çünkü Bu değişkenlere nereden - aynı yöntemde, bazı zamanlayıcılardan (ve yapısal olarak alakasız kodlardan) veya tamamen başka bir süreçten erişmeyi planladığımı %100 bilmek imkansız.
Yani, hepsi dürüst olmak gerekirse. Kontrol.

PS Offtopik, üzgünüm. Geri durmadı.
 
dizilere erişim hakkında.
ArrayCopySeries parametresinde belirtilen dizinin sonucu nedir?

sadece bir değerler dizisi mi, yoksa değerlere işaret eden bir dizi mi?

(soru açıkçası aptalca, ancak 10 yıldır, özellikle C'de, özellikle Windows altında programlama yapmadım.)

Ve tüm bunları nerede okuyabilirim?
 
Keneler arasındaki EA etkinleştirme düğmesinin durumunu belirlemenin herhangi bir yolu var mı?
Çok gerekli..

Belki en azından.. Bilmiyorum. start() için özyinelemeli çağrıya izin veriliyor mu?
 
yani düğme devre dışı bırakıldığında deinit() çalışmıyor mu?
 
Keneler arasındaki EA etkinleştirme düğmesinin durumunu belirlemenin herhangi bir yolu var mı?

imkanı yok. Düğme devre dışı bırakılırsa Uzman Danışman başlamaz.

start()'ın yinelemeli olarak çağrılmasına izin veriliyor mu?

izin verilmiş.
 
Slava,
Cevap için teşekkürler.


İyi. Ve şimdi ne..?
Bilmiyorum .. veya 5'e git, ama dün .. ve bugün 3 .. küçük.

Bir sürü küçükle yetinmek zorundasın. İstemedim. Eee şimdi ne.. :(
çok kolay olacak gibi..

(Dikkat etmeyin, bu meditasyon zaten klavyenin kenarına sıçradı)
 
FirstVisibleBar() ve BarsPerWindow() ME'de renk kodlu değildir.
Benim gözümde mi yoksa böyle mi olması gerekiyor?
 
FirstVisibleBar() ve BarsPerWindow() ME'de renk kodlu değildir.
Benim gözümde mi yoksa böyle mi olması gerekiyor?

Öne çıkarlar ve her zaman normal olarak öne çıkarlar. Sadece 183 ve 187 yapılarını kontrol ettim.