Karşılaştırmanın neden Terminalde değil de Görselleştiricide olduğunu anlamıyorum?
Koda bakmadım. Bu tür görevler için Canvas, tüm "50 satır" için bir tane yapılır.
Terminalde, Kullanım İncil'i aracılığıyla ölçtüm. Yöntemler önemli bir fark göstermez.
Karşılaştırmanın neden Terminalde değil de Görselleştiricide olduğunu anlamıyorum?
Çünkü Görüntüleyicide, Canvas'ın yavaş hızıyla ilgili sorunlar var. Ve hangileri olduğunu görebilirsiniz. Böyle bir ekran CPU zamanının %50'sinden fazlasını tüketir, bundan yukarıda bahsetmiştim! Ve Terminal'de, her şeyi görmek için yöntemleri bir döngüde çağırmanız gerekir. Ama onunla uğraşmadım. Bir döngüde çalışan çevrimdışı optimizasyona sahip bir EA'm var, aslında böyle bir ekranın hızlı bir güncellemeye ihtiyacı var. Ancak proje henüz tamamlanmadığı için henüz sunmaya hazır değilim.
Koda bakmadım. Bu tür görevler için Canvas, tüm "50 satır" için bir tane yapılır.
Sonra bak. O orada yalnız!
Gerçekten burnumu silmek istiyorum, değil mi?
Böyle bir şey yapmak isteyeceğini biliyordum. Ve böyle bir LAZHA olacağını biliyordum.
Karşılaştırmalı testler hazırlamayı bilmiyorsunuz.
Çünkü Görüntüleyicide sadece Canvas'ın yavaş hızıyla ilgili sorunlar var . Ve hangileri olduğunu görebilirsiniz. Böyle bir ekran CPU zamanının %50'sinden fazlasını tüketir, bundan yukarıda bahsetmiştim! Ve Terminal'de, her şeyi görmek için bir döngüde yöntemleri çağırmanız gerekir. Ama onunla uğraşmadım. Bir döngüde çalışan çevrimdışı optimizasyona sahip bir EA'm var, aslında böyle bir ekranın hızlı bir güncellemeye ihtiyacı var. Ancak proje henüz tamamlanmadığı için henüz sunmaya hazır değilim.
Sonra bak. O orada yalnız!
Şey... sadece bir görselleştirici için yazıyorsan, o zaman bu oyunları tek başına oyna. Herhangi bir grafiğin, hatta açılış/kapanış pozisyonlarının işaretlerinin bile görselleştiricinin çalışmasını yavaşlattığını duydunuz mu? Değil
Sizi rahatsız etmemeye çalışacağım… her harf için ayrı etiketler oluşturun… ve ayrıca ayrı bir kaynak…
İnsanları yoldan çıkar.
Gerçekten burnumu silmek istiyorum, değil mi?
Böyle bir şey yapmak isteyeceğini biliyordum. Ve böyle bir LAZHA olacağını biliyordum.
Karşılaştırmalı testler hazırlamayı bilmiyorsunuz.
Yazınızdan anladığım tek şey "hayal", "SAHTE", "Test hazırlamayı bilmiyorum". Doğru, bu konuyla nasıl ilgili olduklarını anlamadım ... Gerisi, "kesinlikle" kelimesinden anlamıyorum! Bu konuyu oluşturduğumda, burada bir yığın anlaşılmaz iddia değil, yapıcı eleştiri görmek istedim! Öyleyse, sözlerini açıklama zahmetine gir. Aksi takdirde, burada saçmalık yayınlamayın!
Şey... sadece bir görselleştirici için yazıyorsan, o zaman bu oyunları tek başına oyna. Herhangi bir grafiğin, hatta açılış/kapanış pozisyonlarının işaretlerinin bile görselleştiricinin çalışmasını yavaşlattığını duydunuz mu? Değil
Sizi rahatsız etmemeye çalışacağım… her harf için ayrı etiketler oluşturun… ve ayrıca ayrı bir kaynak…
Seni bilgilendirmek için acele ediyorum, Alexey. Tabii ki, Nikolai gibi hayal kurmaya meyillisiniz ... Ama gerçekte her şey hayal ettiğiniz gibi değil. Sadece farklı problemler farklı çözümler gerektirir. Sen ve Nikolai esas hakkında yorum yapacak mısınız?!
Yazınızdan anladığım tek şey "hayal", "SAHTE", "Test hazırlamayı bilmiyorum". Doğru, bu konuyla nasıl ilgili olduklarını anlamadım ... Gerisi, "kesinlikle" kelimesinden anlamıyorum! Bu konuyu oluşturduğumda, burada bir yığın anlaşılmaz iddia değil, yapıcı eleştiri görmek istedim! Öyleyse, sözlerini açıklama zahmetine gir. Aksi takdirde, burada saçmalık yayınlamayın!
Sabır dostum sabır.
Haydi. Sadece kodda, önce doğru bir şekilde anlayın, çünkü kod karmaşık bir şeydir ve açıkça gerekçeli iddialara ihtiyacım var!
anlamadım İlk görüntünün bir tuvali var ve üzerinde metin var.
Sonraki görüntüler grafikte aynı metne sahip değil.
Yani, o zaman ne karşılaştırıldı?
Haydi. Sadece kodda, önce doğru bir şekilde anlayın, çünkü kod karmaşık bir şeydir ve açıkça gerekçeli iddialara ihtiyacım var!
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Forum üyelerinin dikkatine, farklı şekillerde oluşturulan grafiğe metin çıktısı vermek için ekranların hızlarının bir karşılaştırmasını sunuyorum. Ekranın ilk versiyonunu CCanvas sınıfını, ikincisini ise etiketler üzerinde oluşturduğum (CChartObjectLabel) kullanarak yaptım. Tüm dersler standart kütüphaneden alınmıştır. Bu fikir bana CCanvas'ta bir ekran oluşturduğumda geldi ve Uzman Danışmanımı önemli ölçüde yavaşlattı. Aynı zamanda, bazı programcılar yanıldığımı iddia ettiler ve CCanvas ve kesin olmak gerekirse, OBJ_BITMAP_LABEL çok hızlı çalışıyor, MetaTrader'da bulunan çizelgedeki bilgileri görüntülemenin tüm yollarından daha hızlı. Bu nedenle deneysel olarak test etmeye karar verdim. Yani, hakikat anı.
CCanvas'ta çıktılı görüntüleme işlemi
Aynı anda CPU üzerindeki yük
CChartObjectLabel'de çıktılı görüntüleme işlemi
Çıkış ile görüntüleme işlemi Hız optimizasyonu modu etkinken CChartObjectLabel (bundan aşağıda bahsedeceğim)
Şimdi zamanın değerleri hakkında. Toplam, bu testin toplam süresi Expert Advisor'dır. Min gecikme, Orta gecikme ve Maks gecikme, tik gecikme süreleridir . Ancak bazı nedenlerden dolayı bunları doğru bir şekilde elde etmek her zaman mümkün değildir, ancak kod kontrol edilmesine rağmen hata yoktur. Bence bu tamamen test cihazındaki GetTickCount64 işlevinin çalışmasıyla ilgili... Ama bu önemli bir sorun değil. Ana şey, toplam sürenin gösterilmesidir.
Şimdi size kısaca etiketlerde gösterimi optimize etmekten bahsedeceğim. Gerçek şu ki, metnin ekranda görünmesi için, özel bir satır dizisinden satırları, yukarıdan aşağıya 50 adet miktarında bulunan etiketlere çıkarmanız gerekir. Ancak sadece son satır güncellendiğinde tüm etiketlerin güncellenmesi gerekmez, bu satıra uyan sadece bir etiketin güncellenmesi yeterlidir. Optimizasyon modunu (optimizeUpdate) açıyoruz ve 2 kattan fazla performans artışı elde ediyoruz.
Çalışma hızından dolayı bu test süresi onun için çok kısa olduğundan, etiketlerdeki ekranı daha ayrıntılı olarak test etmeye karar verdim. Bu nedenle test süresini uzattım. Ve aşağıdaki sonuçları aldım.
optimizasyon optimizeUpdate olmadan: false
Optimizasyon optimizasyonu ile Güncelleme: true
Tüm sonuçlar excel'e eklendi
İlk histogramda genel bir karşılaştırma var, ikincisinde sadece etiketli varyant var.
Çıktı: CChartObjectLabel üzerinde oluşturulan görüntü CCanvas'taki benzerinden 83,7 kat daha hızlı çalışabilir. Pikseller üzerindeki işlemlerin tüm programlarda en pahalı olarak kabul edilmesine şaşmamalı!
Ekli, test sonuçlarını içeren bir tablodur. Kaynaklar KB olarak indirilebilir: https://www.mql5.com/ru/code/33898