DirectX - ページ 10

 
Реter Konow:

表のどこに変化があるのでしょうか?描き直しているのでしょうか?

はい、常に再描画されます。

一般に、スクリプトは一時停止せずに3つのテストを投げました。

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) #1: loops=1000 ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: loops=10000 ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: loops=100000 ms=35812

1000〜100 000回のループと値の更新......。.Net + WinFormは、私のノートパソコンでもラグがなく、このような曖昧なタスクでも非常に生産的であることに驚いています。

#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);
};
//+------------------------------------------------------------------+

スピードの数値は均一で、22個のdouble値(double、double double[])を.dllにキャストして完全にWinFormsで更新すると0.3msかかることが判明しました。

UPD:この更新速度では、プロセッサに負荷がかかっていることがわかります。


 
Igor Makanu:

再描画が続く

一般に、スクリプトは一時停止せずに3つのテストを投げました。

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) # 1: loops=1000 ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) #2: loops=10000 ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) #3: loops=100000 ms=35812

1000〜100 000回のループと値の更新......。.Net + WinFormは、私のノートパソコンでもラグがなく、このような曖昧なタスクでも非常に生産的であることに驚いています。

スピードの数値は均一で、22個のdouble値(double、double double[])を.dllにキャストして完全にWinFormsで更新すると0.3msかかることが判明しました。

UPD:このようなスピードのアップデートは、CPUに負荷をかけることがおわかりいただけると思います。


マイクロソフト社に手紙を出す必要があります。)

私よりもテーブルの更新の負荷が高いのです。16msごとにリフレッシュをかける。



ZS.シャープで等価表を作成する。負荷を比較するのが面白い。

ファイル:
GUI_Expert.ex5  600 kb
 
12msの方がより正確です
 
Реter Konow:

マイクロソフト社に手紙を出さないといけないですね))

彼らは私よりもテーブルの更新の負荷が重いのです。16msごとにリフレッシュするように設定します。



ZS.シャープで等価表を作成する。負荷を比較するのが面白い。

書いていますが、テーブルの更新を100万回やってみると、Netと交換するときにかかった

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: loops=1000000 ms=322531

私のところでは、更新は16ミリ秒以下です。

しかし、これは完全に独立したフォーム(ウィンドウ)であることに注意してください、それはすべてのWinイベントを取得します、私はそれをテストしたかった - 私はこのような交換でハングアップし、すべてが遅れている場合.Netが疑問に思っていた

ZS:明日多分PC上でラップトップのプロセッサよりも強力なそこにこのスクリプトをチェックするために、少なくともテスター(オプティマイザ)は、それが意味をなさないが、ラップトップ上でほぼ3倍高速です - 実行.Netは非常に、非常に良いですが

 
Igor Makanu:

を書き込み、テーブルを100万回更新しようとすると、Netとやり取りする際に

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) #4: loops=1000000 ms=322531

しかし、これは完全に独立したフォーム(ウィンドウ)であることに注意してください、それはすべてのWinイベントを受信し、一般的に、私はそれをテストしたかった - このような交換で.Netがフリーズするかどうか、すべてが遅れているかどうかは興味深かったです。

SZS:明日多分PC上でそこにラップトップのプロセッサよりも強力なこのスクリプトを確認するには、少なくともテスター(オプティマイザ)は、ポイントがありませんが、ラップトップ上でほぼ3倍高速です - 実行.Netは非常に、非常に良いですが

そして、なぜ100万回もアップデートするのか?16msでリアルタイムにテーブルを更新した方が安上がりだ。あとはイベント モデルが高速化されないので不要です。再描画時の負荷のことです。

 
Реter Konow:

なぜ100万回もアップデートするのか?16msでリアルタイムにテーブルを更新した方が安上がりなのです。あとはイベントモデルが高速化されないので不要です。再描画の負荷の話をしているんです。

だから、努力することはたくさんあります。

ZS:16ミリ秒に間を置いて、まあ、ピーク時のプロセッサは、負荷のわずか1.5%であり、ここで瞬間をキャッチして、ラップトップのプロセッサに注目しています!。

私は議論に興味はなく、ただMQL5と.Netの能力を確認したかっただけです。

 
Igor Makanu:

ということであれば、目指すべきものがあるはずです。

SZY:16ミリ秒で一時停止を置くと、プロセッサは、ピーク時の負荷のわずか1.5%であり、ここで瞬間、ノートPCのプロセッサに注意してください!それは非常に重要です。

MQL5 + .Netの機能を確認するのは興味深く、すべてが非常にクールに動作 します。

それで、確認していないのです。つまり、比較していないのです。MCLとSharpで類似のテーブルを2つ作り、それぞれ16msecでセルを再描画したときに、どのような負荷がかかるかを見てみました。MKLでは、表を用意しました。今度は、シャープに同じことが必要だ。そして、その先にいるのは誰なのかが明らかになるのです。

シャープテーブルをDLLでMT5に接続して比較することを追記します。

 
Реter Konow:

だから、確認しなかったんです。つまり、比較していないのです。MKLとSharpで同じようなテーブルを2つ作り、16msでセルを再描画したときの負荷を確認する必要があります。MKLでは、表を用意しました。今度は、シャープに同じことが必要だ。そして、その先にいるのは誰なのかが明らかになるのです。

シャープテーブルをdllでMT5に接続して比較することを追記します。

50~100個の値をロールして3列のテーブルに記入すれば、0.1msが追加される。

マイクロソフトとその.Netを打ち負かしたと思えばいいのです)))

ZS: .Netのコードは15分で書けました。全部で50行ほどですが、動作は速く、ラグもありません;)

 
Igor Makanu:

50~100の値を送信し、3列のテーブルに記入する際に、0.1ミリ秒が追加されるだけです。

マイクロソフトとその.Netを打ち負かしたと思えばいいのです)))

SZZY:私は快適です。.Netのコードを書くのに15分かかり、全部で50行ほどですが、動作は速く、ラグも感じません;)。

戦わずして勝利はないのだ...))

近いうちにシャープのGUIデザイナーにGUI構築のスピードで勝てるようになるのは間違いないだろう。飛躍的に

現時点で確認したところスピード重視のビルドには向いていない。かわいそうに・・・)))

 
Реter Konow:

今、見てきました。スピード作りに根拠がない。かわいそうに...))

まあ...あなたは、ピーター・ラマー - 珍しい人です )))))

シャープはC++に限りなく近く、生産性の差は最大でも5%で、それ以降は生産性の差はないかもしれません - C++では単純なタスクを書くのに長い時間がかかりますが、ネットではすべての原始的なタスクは1時間~最大1日で終わります ;)

仕事に行くところでしたが、3クリックで2列追加し、MQL5から.dllに転送しました現在3x50 = 150ダブル(50の3つのアレイ)

スクロールバーが リソースを必要とするようになったことに留意してください。

100,000回の更新前のテストはこちら

2020.03.15 00:12:21.812 tst_T (EURUSD,H1) no1: loops=1000 ms=1610

2020.03.15 00:12:38.382 tst_T (EURUSD,H1) no.2: loops=10000 ms=16562

2020.03.15 00:15:19.642 tst_T (EURUSD,H1) #3: loops=100000 ms=161250

例えば、私のノートパソコンで、スクロールバーと153セルの表を持つウィンドウの.Net上のWinFormは1.6ミリ秒で更新されます。

ファイル:
MQL5.zip  209 kb