Benim yaklaşımım. Çekirdek - Motor. - sayfa 125

 
Реter Konow :

Yani aynen dediğin gibi yeniden çiziliyorlar.

Ve işlemci üzerindeki yük, animasyon sırasında gerçekleşir:

Burada piksel dizisindeki değerlerin sürekli olarak yeniden başlatılması var. Her 16 milisaniyede bir. Bu, işlemciyi %40'a kadar yükler.

Tam olarak neyin yüklendiğini anlamaya çalıştım. Kaynağı kaydetmeyi veya okumayı düşündüm. Çizim döngüsündeki dizinin yeniden başlatılması olduğu ortaya çıktı.


Ayrıca, ObjectSetInteger(0,"MT object",OBJPROP_SELECTED,1); öğesine yapılan sürekli çağrının; (Her 16 milisaniyede bir) işlemciyi de yükler. Yaklaşık %10.

Bu çağrıyı, başka bir EA'ya animasyon verileriyle bir kaynağı okuması gerektiğini söylemek için kullanıyorum.

Toplamda, animasyon sırasında işlemci üzerindeki yükün + ~% 50'si ortaya çıkıyor.

Üzgünüm, artık açık anlaşmalar listesinden bahsetmediğimizi fark etmedim. Görünüşe göre konunun 2-3 sayfası kayboldu.
 
Vladimir :
Üzgünüm, artık açık anlaşmalar listesinden bahsetmediğimizi fark etmedim. Görünüşe göre konunun 2-3 sayfası kayboldu.

Hayır, sorun değil. Sadece işlemci üzerindeki yükten bahsettim, çünkü danışman ile motor arasındaki bağlantıyı yeniden yapacağım, bu da açık anlaşmalar tablosunun da verileri farklı şekilde alacağı anlamına geliyor.

 
neden saniyede 64 kare (16 ms), saniyede 32 kare peri-çizim gözler için yeterli.
 
Nikolai Semko :
neden saniyede 64 kare (16 ms), saniyede 32 kare peri-çizim gözler için yeterli.

İyi soru. Aslında, zamanlayıcı düzgün çalışmıyor. Boşluklar var. 16,32,16,16...

32 kullanıyorsanız, boşluklar 64 ms olacaktır. Ve bu fark edilir. Ek olarak, çeşitli başka şeyler de çizimi yükler ve yavaşlatır. Örneğin, OnChartEvent() olay kuyruğu.

Bunun animasyonun kalitesini etkilediğini düşünüyorum. 25ms kullanmayı denedim. Sonra 16 ve 16'nın düzgün hareketi daha iyi ifade ettiği sonucuna vardık.

Daha sonra 16 ms ve 32 ms animasyon ile motoru atacağım ve kendiniz göreceksiniz. Tamam olabilir de...

 
Реter Konow :

İyi soru. Aslında, zamanlayıcı düzgün çalışmıyor. Boşluklar var. 16,32,16,16...

32 kullanırsanız, boşluklar 64 ms olacaktır. Ve bu fark edilir. Ek olarak, çeşitli başka şeyler de çizimi yükler ve yavaşlatır. Örneğin, OnChartEvent() olay kuyruğu.

Bunun animasyonun kalitesini etkilediğini düşünüyorum. 25ms kullanmayı denedim. Sonra 16 ve 16'nın düzgün hareketi daha iyi ifade ettiği sonucuna vardık.

Daha sonra 16 ms ve 32 ms'lik animasyonlarla motoru fırlatıp atacağım ve kendiniz göreceksiniz. Tamam olabilir de...

gerçekten 16ms değil, 1000/64=15.625ms. Bu nedenle, 32 değil 30 ms ayarlamak daha iyidir, o zaman daha az boşluk olacaktır. Onlar. çerçeveler arasındaki duraklama 33 ms olarak ayarlanırsa, gerçek duraklama 15.625×3=46.875 ms olacaktır.
Ve MT'nin kendi dahili grafik güncelleme işleyicisine sahip olduğunu unutmamalıyız, bu nedenle ChartRedraw asenkron olarak çalışacaktır ve MT'nin hepsini işleyeceğine dair bir garanti yoktur.

 
Nikolai Semko :
gerçekten 16ms değil, 1000/64=15.625ms. Bu nedenle, 32 değil 30 ms ayarlamak daha iyidir, o zaman daha az boşluk olacaktır. Onlar. çerçeveler arasındaki duraklama 33 ms olarak ayarlanırsa, gerçek duraklama 15.625×3=46.875 ms olacaktır.
Ve MT'nin kendi dahili grafik güncelleme işleyicisine sahip olduğunu unutmamalıyız, bu nedenle ChartRedraw asenkron olarak çalışacaktır ve MT'nin hepsini işleyeceğine dair bir garanti yoktur.

Niye ya? Sadece merak ediyorum.

 
Алексей Тарабанов :

Niye ya? Sadece merak ediyorum.

Bu sonuçları birçok deneyden ve bilimsel dürtme yönteminden sonra yaptım. Birisi benim ifadelerimi çürütecek deneylere sahipse, çok minnettar olacağım.
 
Nikolai Semko :
gerçekten 16ms değil, 1000/64=15.625ms. Bu nedenle, 32 değil 30 ms ayarlamak daha iyidir, o zaman daha az boşluk olacaktır. Onlar. çerçeveler arasındaki duraklama 33 ms olarak ayarlanırsa, gerçek duraklama 15.625×3=46.875 ms olacaktır.
Ve MT'nin kendi dahili grafik güncelleme işleyicisine sahip olduğunu unutmamalıyız, bu nedenle ChartRedraw asenkron olarak çalışacaktır ve MT'nin hepsini işleyeceğine dair bir garanti yoktur.

Tamam, öğreneceğim.

Zamanlayıcının frekansını azaltmak elbette işlemci üzerindeki yükü de azaltacaktır. Animasyonun kalitesini düşürmezse, harika. İşlemci üzerindeki yük yüzde 30'a kadar azaltılabilir, ancak yine de orada olacaktır.

Buna katlanmak zorunda kalacak.

Doğru, çizim farklı iş parçacıkları arasında dağıtılırsa (örneğin, animasyonun bir kısmı danışman tarafından ve bir kısmı motor tarafından çizilir), o zaman yük neredeyse kaldırılırdı. düşünmek lazım...

 

Ne yazık ki, varsayımım doğrulanmadı.

Şimdi bir deney yaptım - iki çizelgeye bir Uzman Danışman koydum. Danışman, işlemciyi yüzde 50 oranında yükler.

Farklı grafikler üzerinde çalışırken bile, işlemci üzerindeki yükün toplandığı ve MT'den işlemci üzerindeki toplam yükün yüzde 90'ın üzerine çıktığı ortaya çıktı.

Bu, farklı Uzman Danışmanlar arasındaki çizimin bölünmesinin bile yardımcı olmayacağı anlamına gelir. Yük kümülatiftir!

 
Реter Konow :

Ne yazık ki, varsayımım doğrulanmadı.

Şimdi bir deney yaptım - iki çizelgeye bir Uzman Danışman koydum. EA, işlemciyi yüzde 50 oranında yüklüyor.

Farklı grafikler üzerinde çalışırken bile, işlemci üzerindeki yükün toplandığı ve MT'den işlemci üzerindeki toplam yükün yüzde 90'ın üzerine çıktığı ortaya çıktı.

Bu, farklı Uzman Danışmanlar arasındaki çizimin bölünmesinin bile yardımcı olmayacağı anlamına gelir. Yük kümülatiftir!

MT4 ise, evet.
MT5, anladığım kadarıyla, MT4'ün aksine tamamen çok çekirdekli ve çoklu iş parçacığını destekliyor.