Tuval ve Etiketler - sayfa 13

 
Nikolai Semko :

oh iyi, o zaman bu tamamen normal.
Benim gifimde de bir tuval bir paneldir ve çok sık yeniden çizilmesi ve yeni bir çubuk geldiği anı yakalaması gerekmediği için en az kaynağı tüketir.

Süper! Her şey uçuyor!

Ve düşük hızda boşluk olmadan güncellenir.
 
Dmitry Fedoseev :
Doğru dosyaları buldum. Nerede, hangi sayılara, nerede ve ne zaman bakılacağı belli değil, ancak bu olmadan bile, bir etiket yerine sadece tuval kullanılmamasına rağmen, tuvalin çok daha yavaş olduğu çıplak gözle görülebilir. , ancak bir grup etiket yerine bir tuval.

CanvasVsLabels.mq5 uzmanını başlatın, outType görüntüleme türünü seçin, limit_fps'yi etkinleştirin, nIterations'ı ayarlayın , varsayılan olarak 10000'e eşittir.Bu yeterlidir, değiştiremezsiniz. Ardından sonuçlar burada sunulanlara benzer olacaktır: https://www.mql5.com/ru/forum/364640/page11#comment_21301589 .

Şimdi sonuçlar hakkında. Min gecikme , Orta gecikme ve Maks gecikme geçiş başına sırasıyla minimum , ortalama ve maksimum gecikmelerdir. Toplam , tüm niterasyon geçişlerinin toplam süresidir.

Bir kez daha karşılaştırma sonuçları tablosu veriyorum.

Kanvas sınırsız fps tuval sınırlı fps Sınırsız fps etiketler Etiketler sınırlı fps
Min gecikme (µs) 1530 1 on sekiz 0
Orta gecikme (µs) 7674 4086 48 7
Maksimum gecikme (µs) 11967 11093 785 286
Toplam (µs) 77727510 29452299 39648984 27439654


Benzer şekilde, Expert Advisor bunun için tasarlandığından test cihazında ölçümler yapılabilir. Ama henüz onları çalıştırmadım. Boş zamanım olduğunda yapacağım. Gelecekte, çeşitli BitmabLabels'den bir ekranla denemeler yapmayı planlıyorum.

 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Tuval ve Etiketler

fxsaber , 2021.03.13 19:26

ZY Böyle bir sonuç sadece bende mi?

fxsaber :

%15-20 yiyor. Görünüşe göre, fren ekran kartı.

ResourceReadImage'ın çok yavaş olduğu ortaya çıktı. Ondan kurtuldum - sıfır yük vardı.

 

Bir kez daha karşılaştırma tablosunu yayınlıyorum, ancak histogramlarla.

Kanvas sınırsız fps tuval sınırlı fps Sınırsız fps etiketler Etiketler sınırlı fps
Min gecikme (µs) 1530 1 on sekiz 0
Orta gecikme (µs) 7674 4086 48 7
Maksimum gecikme (µs) 11967 11093 785 286
Toplam (µs) 77727510 29452299 39648984 27439654


Geçiş Başına Ortalama Gecikmelerin Karşılaştırılması

orta gecikme

Hangi nedenden dolayı toplam çalışma süresi (Toplam) ile karşılaştırılamaz olduğu ortaya çıktı ...

Toplam çalışma süresinin karşılaştırılması

Toplam

Ölçümler, sınırlı FPS'ye sahip Kanvas tabanlı bir ekranın (Sınırsız Kanvas FPS) performans açısından , sınırlı FPS'ye sahip (Etiketler sınırsız FPS) Etiket tabanlı bir ekrana göre biraz daha yavaş olduğunu göstermiştir. Ancak genel olarak ikisi de çok yüklü işlemlerden gelen bilgileri görüntülemek için uygundur.

Ölçümleri gerçekleştirmek için bir uzman nasıl başlatılır

Giriş parametreleri

  1. Canvas veya Etiketler açılır menüsünden outType'ı seçin
  2. limit_fps'yi etkinleştirin veya devre dışı bırakın
  3. Seçimi onaylıyoruz
  4. Tablodaki ölçümleri başlatmak için Başlat düğmesine basın

Başlangıç ölçümleri

Aynı şekilde bir uzman da görsel test cihazında ölçüm yapabilir. Yalnızca test cihazı ayarlarındaki tarih aralığı, geçmişte nIterations giriş parametresinin değerinden daha az çubuk olmayacak şekilde ayarlanmalıdır.

Daha fazla bilgi ve kaynak Grafik Görüntüleme kitaplığının açıklamasında bulunabilir: https://www.mql5.com/en/code/33898

Ölçümler için özel olarak değiştirilmiş kitaplık: https://www.mql5.com/en/code/download/33898/chartdisplay.mqh

Ölçümler için evrensel uzman: https://www.mql5.com/en/code/download/33898/canvasvslabels.mq5

Daha fazla ayrıntı için KB'ye bakın: https://www.mql5.com/en/code/33898


Bu konunun ilk gönderisine yeni bir Uzman Danışman yardımıyla yapılmış daha doğru ölçümleri eklemek istiyorum. Çünkü şu anda orada olan ölçümler yanlış. Ancak ilk mesaj maalesef artık düzenlenemez. Moderatörlerden başlangıca daha doğru ölçümler eklemelerini rica ediyorum ve şimdi orada olanlar alakasız olarak yayınlanmalı.

Дисплей с оптимизацией для вывода текста в чарт по типу консоли
Дисплей с оптимизацией для вывода текста в чарт по типу консоли
  • www.mql5.com
Данная библиотека позволяет создавать дисплеи для удобного вывода текстовой информации в чарт с наиболее оптимальной скоростью
 
fxsaber :

ResourceReadImage'ın çok yavaş olduğu ortaya çıktı. Ondan kurtuldum - sıfır yük vardı.

Gerçekten?
Benim için sürpriz.
Aynı boyutta normal bir uint dizisini kopyalamaktan ne kadar daha yavaş?
 
Mihail Matkovskij :

CanvasVsLabels.mq5 uzmanı başlatılıyor...

Peki ya anlamı? Şu anda, kodu kazmak istemiyorum. Bu metrikler nasıl hesaplanır? Test cihazında bu şekilde test yapıyorsanız, çalıştırmada harcanan toplam süreyi ölçmeniz gerekir ve daha fazlasını değil, kodun ayrı bölümlerinin çalışmasını ölçmeniz gerekmez. Son çare olarak init'i saymayın. Ve şimdi, ölçümler olmadan, tuvalin daha yavaş çalıştığı açıktır. Bir anormallik mi bilmiyorum...

 
Nikolai Semko :
Gerçekten?
Benim için sürpriz.
Aynı boyutta normal bir uint dizisini kopyalamaktan ne kadar daha yavaş?

Bir çağrı ile sıfır olmadan yaklaşık% 15 yük vardı.

 
Dmitry Fedoseev :

Peki ya anlamı? Şu anda, kodu kazmak istemiyorum. Bu metrikler nasıl hesaplanır? Test cihazında bu şekilde test yapıyorsanız, çalıştırmada harcanan toplam süreyi ölçmeniz gerekir ve daha fazlasını değil, kodun ayrı bölümlerinin çalışmasını ölçmeniz gerekmez. Son çare olarak init'i saymayın. Ve şimdi, ölçümler olmadan, tuvalin daha yavaş çalıştığı açıktır. Bir anormallik mi bilmiyorum...

Kodun içine girmek içimden gelmiyor. Ve bir kelime alma arzusu da yok. :) Sana nasıl açıklayacağımı gerçekten bilmiyorum. Tüm kodları nasıl yazdığımı baştan sona anlatmak gerekirse... Yani tam bir yazı olacak. :)

Ve bir uzmanın ölçümleri nasıl yaptığı konusunda hiçbir şey anlaşılamaz.

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void run() {
   MqlRates rates[];
   int digits = ( int ) SymbolInfoInteger ( _Symbol , SYMBOL_DIGITS );
   ulong start, min, mid, max;
   ulong last, delay; 
   static ulong totalDelays = 0 ;
   static int nTick = 0 ;
   ulong first;
   if (!triggerBtn.State())
     return ;
  start = GetMicrosecondCount ();
  min = INT_MAX ; mid = 0 ; max = 0 ;
   if ( CopyRates ( NULL , PERIOD_CURRENT , 0 , nIterations, rates) != nIterations) {
    triggerBtn.State( false );
    triggerBtn.setText( "Start" );
     Print ( "Not enough quotes!" );
     Comment ( "Not enough quotes!" );
     return ;
  }
   for ( int i = nIterations - 1 ; i >= 0 && triggerBtn.State(); i--) {
    first = GetMicrosecondCount ();
    
    display.push();
    display.setText(concatenate(i));
    display.update();
    
    last = GetMicrosecondCount ();
    delay = last - first;
     if (delay < min)
      min = delay;
     if (delay > max)
      max = delay;
    nTick++;
    totalDelays += delay;
    mid = totalDelays / nTick;
     Comment ( "Min delay: " + ( string )min + " μs\n"
             "Mid delay: " + ( string )mid + " μs\n"
             "Max delay: " + ( string )max + " μs\n"
             "Total: " + ( string )( GetMicrosecondCount () - start) + " μs" + " \n"
             "Completed: " + ( string )( int )( 100.0 / nIterations * (nIterations - i)) + "%" );
  }
  
   printf ( "Min delay: %d μs" , min);
   printf ( "Mid delay: %d μs" , mid);
   printf ( "Max delay: %d μs" , max);
   printf ( "Total: %d μs" , GetMicrosecondCount () - start);
  triggerBtn.State( false );
  triggerBtn.setText( "Start" );
   ChartRedraw ();
}
Toplam, döngünün sonunda hesaplanır ve min, orta ve maks, display.push, display.setText ve display.update'den sonra döngünün gövdesinde hesaplanır. Karmaşık bir şey yok, oturup her şeye dikkatlice bakarsanız Kanvas ve Etiketlerin kaynak koduna bile ulaşabilirsiniz. Bu arada, orada da karmaşık bir şey yok. Canvas'ta Bezier eğrileri ve benzerlerini çizen yöntemler dışında.
 
Dmitry Fedoseev :

Ve şimdi, ölçümler olmadan, tuvalin daha yavaş çalıştığı açıktır. Bir anormallik mi bilmiyorum...

Aynı zamanda, Canvas'ın hangi giriş parametrelerinde yavaş olduğunu söylemeniz gerekir. limit_fps: false ise, o zaman "ve falcıya gitmeyin" açıktır... :)

 
fxsaber :

ResourceReadImage'ın çok yavaş olduğu ortaya çıktı. Ondan kurtuldum - sıfır yük vardı.

Derleme sırasında kaydedilen bir kaynaktan okursanız, bu bir kez yapılmalıdır.

Kaynaklar derleme sırasında sıkıştırılır.