DirectX - sayfa 10

 
Реter Konow :

Tablo değişiklikleri nerede? Yeniden mi çiziyor?

evet yeniden çizmeye devam ediyor

genel olarak, duraklama olmadan komut dosyası 3 test attı

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) #1: döngüler=1000ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: döngüler=10000ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: döngüler=100000ms=35812

1000 - 100.000 yeniden yazma ve değer güncellemesi.... şaşırtıcı bir şekilde, .Net + WinForm bu tür anlaşılmaz görevler için bile oldukça üretken, bir dizüstü bilgisayarda bile hiçbir şey gecikmez

 #import "LogToWinForm.dll"
#import

double price[ 20 ];

#define   SpeedTest(count_x10,msg,EX)        { uint mss= GetTickCount (); ulong count=( ulong ) pow ( 10 ,count_x10); for ( ulong ii= 0 ;ii<count&&! _StopFlag ;ii++){EX;} \
                                               printf ( "%s: loops=%i ms=%u" ,msg,count, GetTickCount ()-mss);}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   ArrayInitialize (price, 1.0 );
   while (!Log::InitForm()) Sleep ( 200 );
   Sleep ( 1000 );

   SpeedTest( 3 , "№ 1" , sendTodl());
   SpeedTest( 4 , "№ 2" , sendTodl());
   SpeedTest( 5 , "№ 3" , sendTodl());
}
//+------------------------------------------------------------------+
void sendTodl()
{
   for ( int i = 0 ; i < 19 ; i++)
   {
      price[i] = price[i + 1 ];
   }
   price[ 19 ] = NormalizeDouble (price[ 18 ] + _Point , _Digits );
   double ask = NormalizeDouble (( double ) rand () * _Point , _Digits );
   double bid = NormalizeDouble (( double ) rand () * _Point , _Digits );
   Log::PrintToLog(ask, bid, price);
};
//+------------------------------------------------------------------+

hız ölçüm sayıları eşit, ortaya çıktı 22 double değeri (double, double double[]) .dll'ye atılıyor ve tamamen güncellenen WinForms 0.3 ms sürüyor

UPD: ama şimdi böyle bir güncelleme hızında işlemci üzerinde bir yük olduğu açık


 
Igor Makanu :

evet yeniden çizmeye devam ediyor

genel olarak, duraklama olmadan komut dosyası 3 test attı

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) #1: döngüler=1000ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: döngüler=10000ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: döngüler=100000ms=35812

1000 - 100.000 yeniden yazma ve değer güncellemesi.... şaşırtıcı bir şekilde, .Net + WinForm bu tür anlaşılmaz görevler için bile oldukça üretkendir, bir dizüstü bilgisayarda bile hiçbir şey gecikmez

hız ölçüm sayıları eşit, ortaya çıktı 22 double değeri (double, double double[]) .dll'ye atılıyor ve tamamen güncellenen WinForms 0.3 ms sürüyor

UPD: ama şimdi böyle bir güncelleme hızında işlemci üzerinde bir yük olduğu açık


Micro-soft firmasına yazmanız gerekmektedir.))

Tablo güncellemeleri benimkinden daha fazla yük veriyor. Her 16 ms'de bir güncelleme teslim edildi.



not. Sharp'ta eşdeğer bir tablo oluşturun. Yükü karşılaştırmak ilginç.

Dosyalar:
GUI_Expert.ex5  600 kb
 
12ms doğru olur
 
Реter Konow :

Micro-soft firmasına yazmanız gerekmektedir.))

Tablo güncellemeleri benimkinden daha fazla yük veriyor. Her 16 ms'de bir güncelleme teslim edildi.



not. Sharp'ta eşdeğer bir tablo oluşturun. Yükü karşılaştırmak ilginç.

yazın, ancak tabloyu 1 milyon kez güncellemeye çalışın, Net ile değiş tokuş yaparken aldı

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: döngüler=1000000ms=322531

güncelleme benim için 16 ms'den az - 0,3 msn üzerinde yazdım

ancak bunun tamamen bağımsız bir form (pencere) olduğuna dikkat edin, tüm Win olaylarını alıyor, genel olarak test etmek için kaydoldum - böyle bir değişim sırasında .Net'in donması ve her şeyin gecikip gecikmeyeceği ilginçti.

Not: yarın bu betiği bir PC'de kontrol edebilirim, bir dizüstü bilgisayardan daha güçlü, işlemci, en azından test cihazı (optimizer) bir dizüstü bilgisayarda olduğundan neredeyse 3 kat daha hızlı çalışıyor, hiçbir anlam ifade etmese de - .Net çok çalışıyor , çok iyi

 
Igor Makanu :

yazın, ancak tabloyu 1 milyon kez güncellemeye çalışın, Net ile değiş tokuş yaparken aldı

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: döngüler=1000000ms=322531

ancak bunun tamamen bağımsız bir form (pencere) olduğuna dikkat edin, tüm Win olaylarını alıyor, genel olarak test etmek için kaydoldum - böyle bir değişim sırasında .Net'in donması ve her şeyin gecikip gecikmeyeceği ilginçti.

Not: yarın bu betiği bir PC'de kontrol edebilirim, bir dizüstü bilgisayardan daha güçlü, işlemci, en azından test cihazı (optimizer) bir dizüstü bilgisayarda olduğundan neredeyse 3 kat daha hızlı çalışıyor, hiçbir anlam ifade etmese de - .Net çok çalışıyor , çok iyi

Neden milyonlarca kez güncelleyelim? Tabloyu gerçek zamanlı olarak 16 ms sıklıkta güncellememiz bizim için daha ucuz olacaktır. Gerisi gereksiz, çünkü olay modeli daha hızlı çalışmıyor. Yeniden yüklemekle ilgili.

 
Реter Konow :

Neden milyonlarca kez güncelleyelim? Tabloyu gerçek zamanlı olarak 16 ms sıklıkta güncellememiz bizim için daha ucuz olacaktır. Gerisi gereksiz, çünkü olay modeli daha hızlı çalışmıyor. Yeniden yüklemekle ilgili.

o zaman çabalayacak ne var

Not: 16 ms'de durakladım, yani tepedeki işlemci sadece %1,5 yüklü, o yüzden anı yakaladım ve laptop işlemcisini fark ettim!

tamam, tartışmak hiç ilginç değil, MQL5 + .Net'in olanaklarını kontrol etmek ilginçti - her şey çok güzel çalışıyor!

 
Igor Makanu :

o zaman çabalayacak ne var

Not: 16 ms'de durakladım, yani tepedeki işlemci sadece %1,5 yüklü, o yüzden anı yakaladım ve laptop işlemcisini fark ettim!

tamam, tartışmak hiç ilginç değil , MQL5 + .Net'in olanaklarını kontrol etmek ilginçti - her şey çok güzel çalışıyor!

Yani kontrol etmedik. Yani karşılaştırmadılar. İki benzer tablo oluşturmanız gerekir - LCL'de ve Sharp'ta ve hücrelerini 16 ms'lik bir frekansta yeniden çizerken her birinin hangi yükü verdiğini görün. MKL'de bir tablo sağladım. Şimdi, aynı şeye Sharpe için de ihtiyacımız var. Ve sonra kimin önde olduğu ortaya çıkıyor.

Sharp tablosunun dll ile MT5'e bağlanması ve ardından karşılaştırması gerektiğini ekleyeceğim.

 
Реter Konow :

Yani kontrol etmedik. Yani karşılaştırmadılar. İki benzer tablo oluşturmanız gerekir - LCL'de ve Sharp'ta ve hücrelerini 16 ms'lik bir frekansta yeniden çizerken her birinin hangi yükü verdiğini görün. MKL'de bir tablo sağladım. Şimdi, Sharpe için de aynısına ihtiyacımız var. Ve sonra kimin önde olduğu ortaya çıkıyor.

Sharp tablosunun dll ile MT5'e bağlanması ve ardından karşılaştırması gerektiğini ekleyeceğim.

Aldanmayacağım - Biliyorum hiçbir şey değişmeyecek, peki 50-100 değeri iletirseniz ve tabloda 3 sütuna doldurursanız 0,1 ms eklenecek

Microsoft'un .Net ile kazandığını düşünebilirsiniz)))

Not: .Net'teki kodun 15 dakika yazmış olması, toplamda yaklaşık 50 satır olması benim için uygun, akıllıca çalışıyor, hiçbir fren fark edilmedi ;)

 
Igor Makanu :

Aldanmayacağım - Biliyorum hiçbir şey değişmeyecek, peki 50-100 değeri iletirseniz ve tabloda 3 sütuna doldurursanız 0,1 ms eklenecek

Microsoft'un .Net ile kazandığını düşünebilirsiniz)))

Not: .Net'teki kodun 15 dakika yazmış olması, toplamda yaklaşık 50 satır olması benim için uygun, akıllıca çalışıyor, hiçbir fren fark edilmedi ;)

Savaşmadan zafer olmaz...

Yakında bir GUI oluşturma hızı açısından Sharp'ın tasarımcısını geçeceğime bahse girerim. faktörü.

Şimdi baktım. Yüksek hızlı inşaat için bilenmiş değildir. Onun için üzgünüm...)))

 
Реter Konow :

Şimdi baktım. Yüksek hızlı inşaat için bilenmiş değildir. Onun için üzgünüm...)))

Eh, peki ... sen bir topalsın Peter - ve nadir bir tane))))

Hız açısından keskin, C ++ 'a mümkün olduğunca yakındır, performans farkı, peki, maksimum% 5'tir ve daha sonra performansta bir fark olmayabilir - C'de basit görevleri yazmak uzun zaman alır ++, Net'te tüm ilkel görevler bir saat içinde yapılır - maksimum bir gün yapılır; )

Zaten biraz iş yapmak istiyordum, ancak üç tıklamayla 2 sütun daha ekledim ve şimdi MQL5'ten .dll'ye iletiyorum 3x50 = 150 double (her biri 50'lik 3 dizi)

şimdi hızı ölçtü - ve artık kaydırma çubuklarının da kaynak gerektirdiğini unutmayın - WinForm tamamen güncellendi

100.000 güncellemeye kadar aynı test burada

2020.03.15 00:12:21.812 tst_T (EURUSD,H1) #1: döngüler=1000ms=1610

2020.03.15 00:12:38.382 tst_T (EURUSD,H1) #2: döngüler=10000ms=16562

2020.03.15 00:15:19.642 tst_T (EURUSD,H1) #3: döngüler=100000 ms=161250

onlar. Dizüstü bilgisayarımda kaydırma çubukları ve 153 hücrelik bir tablo bulunan bir pencerede .Net üzerinde WinForm 1,6 ms'de güncelleniyor

Dosyalar:
MQL5.zip  209 kb