Hatalar, hatalar, sorular - sayfa 975

 

Üzgünüm yanılmışım. Bitmap performansı etiketlerden %16-25 daha düşüktür (öğelerin sayısına bağlı olarak), ancak daha önce yazdığım gibi bir büyüklük sırasına göre değil.

Muhtemelen, araca ilk hakim olduğunuzda, kodda hatalar/verimsizlikler vardı.

Kodu ekliyorum.

tol64

İnan bana, seni aldatmak için tek bir nedenim yok = kendimi. İlk denememde, test cihazında bitmap'i gözlemledim. Maalesef çoğaltılamaz. :(

Dosyalar:
 
voix_kas :

...

tol64

İnan bana, seni aldatmak için tek bir nedenim yok = kendimi. İlk denememde, test cihazında bitmap'i gözlemledim. Maalesef çoğaltılamaz. :(

TAMAM. Geliştiricilerin bu özelliği uygulamasını ve ardından düzgün bir şekilde test etmesini bekliyoruz. )))
 

Ayrıca, yazı tiplerinin görüntülenmesindeki farklılıklara geliştiricilerin dikkatini çekmek isterim:


Sol - bitmap, sağ - etiketler. Tüm ayarlar aynı olmasına rağmen, bitmap biraz daha kalın bir yazı tipi oluşturma özelliğine sahiptir.

Soru kritik değil. Ama düzen için dikkat etmeniz gerekiyor. :)

 
voix_kas :

Ayrıca yazı tiplerinin görüntülenmesindeki farklılıklara geliştiricilerin dikkatini çekmek istiyorum.

Sol - bitmap, sağ - etiketler. Tüm ayarlar aynı olmasına rağmen, bitmap biraz daha kalın bir yazı tipi oluşturma özelliğine sahiptir.

Soru kritik değil. Ama düzen için dikkat etmeniz gerekiyor. :)

Bitmap için yazı tipi kalınlığını ayarlamak için hangi bayrağı kullandınız ?
 
voix_kas :

Üzgünüm yanılmışım. Bitmap performansı etiketlerden %16-25 daha düşüktür (öğelerin sayısına bağlı olarak), ancak daha önce yazdığım gibi bir büyüklük sırasına göre değil.


hayır. testin hala yanlış

Her değişiklikten sonra ChartRedraw'ı kullanırsınız . Yani aslında ChartRedraw'ı 10000 kez test ediyorsunuz. Bu doğru değil.

Sonuçta, görev, neyin daha hızlı değiştirildiğini bulmaktır - etiketler veya bir bitmap. Ve grafikteki sonraki girişleri değil.

ChartRedraw'ı döngü içinde bırakırsak test sonuçları buradadır.

Bitmap güncelleme zamanı=40980.
Etiket güncelleme zamanı = 41777.

(yani, bitmap etiketlerden biraz daha hızlıdır)

Ve döngü içinde ChartRedraw varlığında hiçbir şeyin etiket sayısına ve bitmap'in genişliğine bağlı olmadığını belirtmek isterim. Diğer bir deyişle, ChartRedraw işlevi bu durumda en yavaş olanıdır.

---

ChartRedraw'ı döngüden çıkarırsak, tamamen farklı sayılar elde ederiz.

Bitmap güncelleme zamanı=5788.
Etiket güncelleme zamanı = 234.

yani etiketli terminal, bitmap'ten 20 kat daha hızlı çalışır


ve burada, elbette, bitmap'in yüksekliğinin bağımlılığını zaten görebilirsiniz. 100 etiket için:

Bitmap güncelleme zamanı=51355.
Etiket güncelleme süresi = 1108.
50 kat fark

ve işte bir bitmap - 250 * 20 boyutunda. yani, işaretlerin koordinatlarını değiştirmiyoruz. sadece bir noktada tüm yüzün çıktısı.

alırız

Bitmap güncelleme zamanı=25054.

yüz puanlık fark 25 katıdır.


Yani, görebileceğiniz gibi, onunla çalışmak söz konusu olduğunda bitmap gerçekten yavaş bir insandır. çizim süreci yavaş.

Diziler + WinGdi TextOut + ResourceCreate = kreasyonları ile sabit döngüsel çalışmanın, yerel MT nesnelerinden en az bir büyüklük sırası, hatta 50 kat daha düşük olduğu açıktır .

bu nedenle MT nesnelerini herhangi bir şekilde reddetmek mümkün değildir. Ancak bitmap'i de unutamazsınız. Grafikler ve histogramlar çizmek için muhtemelen çok kullanışlı olacağından.

Документация по MQL5: Операции с графиками / ChartRedraw
Документация по MQL5: Операции с графиками / ChartRedraw
  • www.mql5.com
Операции с графиками / ChartRedraw - Документация по MQL5
 

Varsayılan 0'dır, açıkça ayarlamadım. Ekli kaynak kodunda görebilirsiniz.

Farklı bayraklara sahip ek bir "oyun" da tekdüzeliğe yol açmadı.

 
sergeev :

...

Sonuçta, görev, neyin daha hızlı değiştirildiğini bulmaktır - etiketler veya bir bitmap. Ve grafikteki sonraki girişleri değil.

...

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.

Yalnızca ChartRedraw() çağrıldığında, farklı nesnelerden bir alfa kanalına sahip görüntülerin karşılıklı bindirmeleri dahil olmak üzere tüm pencere çizilir.

Bu hipotez, metin etiketli komut dosyasındaki kod profili oluşturucu tarafından güçlü bir şekilde onaylanır.

Bitmap'e gelince, içindeki darboğaz TextOut() işlevidir.

 
voix_kas :

...

Bitmap'e gelince, içindeki darboğaz TextOut() işlevidir.

Böyle daha güzel görünüyor :)

 
tol64 :

Böyle daha güzel görünüyor :)

Kabul ediyorum. :)

sergeev :

...

ChartRedraw'ı döngü içinde bırakırsak test sonuçları buradadır.

Bitmap güncelleme zamanı=40980.
Etiket güncelleme zamanı = 41777.

(yani, bitmap etiketlerden biraz daha hızlıdır)

Garip, tam tersi bir resme sahibim:

 

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

2D işlevlerini güçlü ve ana ile kullandığımız için video kartı da hızı doğrudan ve güçlü bir şekilde etkiler. Örneğin, en basit video kartlarına sahip zayıf dizüstü bilgisayarlarda, oluşturma yavaştır ve çıktı yöntemlerindeki fark büyüktür.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5