Hatalar, hatalar, sorular - sayfa 976

 
Testler yapıp sonuçları yazarım.
 
voix_kas :

...

Garip, tam tersi bir resme sahibim:

Bu çıktıya sahibim:

Görmek ilginç.
 

Etiketleri test ederken, oluşturma işleminin MQL5 sisteminden tamamen kaldırıldığını ve arabirim iş parçacığına çizildiğini tamamen unutmuşum. MQL5'te yalnızca etiket açıklamaları değiştirilir.

Ancak bir bitmap çizerken, neredeyse tüm iş MQL5 içinde yapılır ve arayüz akışında yalnızca çok hızlı tek bir BitBlt kalır.

Yani, etiketlerin gösterimi hiç test edilmediğinden test tamamen yanlıştır. Grafik yenileme, yalnızca çizilecek arabirim iş parçacığına bir bildirim gönderen eşzamansız bir komuttur. ChartRedraw maliyetleri ile ekran görüntüsünden de anlaşılacağı gibi.

 
Renat :
Argb_normalize ek renk normalleştirme yükü gerektirdiğinden kullanılmamalıdır. Basit şeyleri saf renkle boyamak daha iyidir.

Alfa kanalı estetiği ile büyülüyor. Metin, grafiğin/çubukların arka planında "şeffaf" olarak görüntülendiğinde. Uygulama alanlarının bölünmesiyle ilgili bariz sonuç kendini göstermektedir.

Yalnızca bir mesaj/istatistik görüntülemeniz gerekiyorsa, bir metin etiketi daha hızlıdır. Kontrol oluşturma durumunda (örneğin, düğmeler) - ayrıca seçenekler olmadan bir bitmap. Ardından, çok fazla hayal kırıklığına uğramadan, tüm dikdörtgen alanı alfa kanalı / şeffaflık olmadan düz bir renkle doldurabilirsiniz.

 
voix_kas :

ChartRedraw() işlevini döngüden kaldırmak yanlıştır, çünkü metin etiketi özelliğini değiştirmenin "atomik işlemi", terminalin video motoru tarafından hiçbir şekilde işlenmez.

aha, tıpkı bir diziyle çalışmanın bir video motoru tarafından işlenmediği gibi.

Görevin neyin daha hızlı çalıştığını bulmak olduğunu tekrar ediyorum. bitmap değişikliği veya etiket değişikliği

bitmap oluşturma kaybeder - bu kesindir.

ve her iki durumda da haritanın çizilmesi tartışmalı ve ikincil bir konudur.


sonucu kendiniz düşünürsünüz. etiket değiştirme döngüsü başına 4 saniyeyi görebilirsiniz ???? bu saçmalık.

etiket değişiklikleri, grafik oluşturma alt sistemine karışmadan, yalnızca değişiklik için kontrol edilmelidir.

aksi takdirde bitmap ile karşılaştırılabilir sayılar göreceksiniz.

 
Renat :

Etiketleri test ederken, oluşturma işleminin MQL5 sisteminden tamamen kaldırıldığını ve arabirim iş parçacığına çizildiğini tamamen unutmuşum. MQL5'te yalnızca etiket açıklamaları değiştirilir.

Ancak bir bitmap çizerken, neredeyse tüm iş MQL5 içinde yapılır.

ancak aynı zamanda etiketin hızı bitmapten daha hızlı değişir. Yavaş GDI fonksiyonları nedeniyle.

Yani, etiketlerin gösterimi hiç test edilmediğinden test tamamen yanlıştır. Grafik yenileme, yalnızca çizilecek arabirim iş parçacığına bir bildirim gönderen eşzamansız bir komuttur. ChartRedraw maliyetleri ile ekran görüntüsünden de anlaşılacağı gibi.

bu kadar.


Birkaç özel zor görev koşullarında bir test yapmanın gerekli olduğunu düşünüyorum. Kim bir kıyaslama kullanarak böyle bir görevi üstlenecek?

- bir etiket kalabalığı (dikdörtgen) ve bir bitmap kullanarak bir grafik çizme (örneğin bir sinüs dalgası).
- Excel tablosu (dikdörtgen+metin etiketi) ve bitmap olarak çizimi.

peki ve MT grafiklerinin bir bitmap ile değiştirilebileceği diğer seçenekler.

bir bitmap ve bir grup MT nesnesini desteklemek için kaynak maliyetlerini kontrol etmeniz gerekir. + doldurulmuş alanların boyutuna bağımlılık.

 

Etiket testi ayrıca okumadan yazmak için etiketlerle tek yönlü çok ekonomik bir çalışma olduğunu göstermektedir. Bu durumda, yazma başına komut akışı mümkün olduğunca hızlı bir şekilde iletilir (bu durumda özellikle verimli bir sistem kullanırız).

Ancak, genellikle gerçek işte olan bu nesnelerin okuma ile yazma ile karıştırılmasını kullanırsanız, hız önemli ölçüde düşecektir.

Güncelleme: Etiket testi örneğinde de kritik bir hata var - 26 değil, yalnızca bir etiket değiştiriliyor. Kaynağa bakın.

 
Renat :

Yani, etiketlerin gösterimi hiç test edilmediğinden test tamamen yanlıştır.

sergeev :

etiket değişiklikleri, grafik oluşturma alt sistemine karışmadan, yalnızca değişiklik için kontrol edilmelidir.

Tabii ki, katılmıyorum. Argüman: Kullanıcının durumdaki değişikliği (istatistikleri) mümkün olduğunca sık, her işarette görmesi arzu edilir. Bu nedenle, istatistikleri güncelledikten sonra, = ChartRedraw() gösterilmelidir.

Bu, tabiri caizse, performansın doğrudan uygulanan/pratik doğası açısından böyledir.

Bir vakumdaki küresel kıyaslamalara gelince, bu isteğe bağlıdır.

 
sergeev :

ancak aynı zamanda etiketin hızı bitmapten daha hızlı değişir. Yavaş GDI fonksiyonları nedeniyle.

Hayır, etiketleri değiştirirken hiçbir GDI yöntemi çağrılmaz. İşaretler µl5'te hiç çizmiyor!
 
Renat :

Etiket testi örneğinde de kritik bir hata var - 26 değil, yalnızca bir etiket değiştirildi. Kaynağa bakın.

Metin, göstergenin açıklamasını değil, değerini göstermesi amaçlanan etiketlerin tümünde (yarısında) değişir. Komut dosyasını çalıştırdığınızda görebilirsiniz.

Ya ben seni anlamadım Hangi özel çizgiden bahsediyorsun?