![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Ü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. :(
...
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. :(
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. :)
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. :)
Ü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.
Bitmap için yazı tipi kalınlığını ayarlamak için hangi bayrağı kullandınız ?
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ı.
...
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.
...
Bitmap'e gelince, içindeki darboğaz TextOut() işlevidir.
Böyle daha güzel görünüyor :)
Böyle daha güzel görünüyor :)
Kabul ediyorum. :)
...
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.